2012-04-03 14 views
0

に動作していない。これは、これは私のParserクラスJAXB:XMLで追加余分なタグ、非整列化プロセスが

public class Test { 
    public static void main(String args[]) throws Exception { 

     File file = new File("D:\\Ravi.xml"); 
     JAXBContext jaxbContext = JAXBContext 
       .newInstance(AuthentifyResult.class); 
     Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
     AuthentifyResult authentifyResult = (AuthentifyResult) jaxbUnmarshaller 
       .unmarshal(file); 
     System.out.println(authentifyResult.getData().getHeader().getTeid()); 
    } 
} 

これはAuthentifyResult.javaである

<AuthentXML> 
<Data> 
<header> 
<asid>AuthenticationSubjectID</asid> 
<teid>B6F997AE-FB4E-11D3-80BD-0050DA5DC7B8</teid> 
<replyTo>https://r1.authentify.net/s2s/default.asp</replyTo> 
</header> 
</Data> 
</AuthentXML> 

与えられたXMLであります

package com; 

import javax.xml.bind.annotation.XmlElement; 
import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement(name="AuthentXML") 
public class AuthentifyResult { 
    private Data data; 

    @XmlElement(name="Data") 
    public Data getData() { 
     return data; 
    } 
    public void setData(Data data) { 
     this.data = data; 
    } 
} 

これは、これは私が出力としてnullを取得していますHeader.javaが

package com; 

import javax.xml.bind.annotation.XmlAttribute; 
import javax.xml.bind.annotation.XmlRootElement; 



public class Header { 

private String ASD; 
@XmlAttribute 
public String getASD() { 
    return ASD; 
} 
public void setASD(String aSD) { 
    ASD = aSD; 
} 
@XmlAttribute 
public String getTeid() { 
    return teid; 
} 
public void setTeid(String teid) { 
    this.teid = teid; 
} 
@XmlAttribute 
public String getReplyTo() { 
    return replyTo; 
} 
public void setReplyTo(String replyTo) { 
    this.replyTo = replyTo; 
} 
private String teid; 
private String replyTo; 

} 

ファイルであるData.java

package com; 

import javax.xml.bind.annotation.XmlRootElement; 


public class Data { 
    private Header header; 
    public Header getHeader() { 
     return header; 
    } 
    public void setHeader(Header header) { 
     this.header = header; 
    } 
} 

ですが、私はバインディングが起こっていない理由を知りません?

+0

に見えるようにしたい意味し、一方で、あなたのXMLが

<header teid="A Value"></header 

に見えるようにしたい意味誰もがこれを解決する方法を、私を助けてもらえます? – Pawan

答えて

1

<Data>タグは、が名前Dataのオブジェクトに含まれていると思っています。 AuthentifyResultの内容を新しいクラスに移動し、次にクラスに要素名がDataのこの新しいクラスが含まれるようにしたいとします。ヘッダークラ​​スについては

@XmlRootElement(name="AuthentXML") 
public class AuthentifyResult { 
    private Data data; 

    @XmlElement(name="Data") 
    public Data getData() { 
     return data; 
    } 
    public void setData(Data data) { 
     this.data = data; 
    } 
} 

public class Data { 
    private Header header; 
    public Header getHeader() { 
     return header; 
    } 
    public void setHeader(Header header) { 
     this.header = header; 
    } 
} 

、あなたは@XmlElement@XmlAttribute注釈を交換したいです。 @XmlAttributeは、あなたが@XmlElementがあなたのXMLが

<header> 
    <teid>A Value</teid> 
    </header> 
+0

返事をありがとうが、私は出力としてnullを取得している、私はあなたのコードで上記の質問をedietdしている。参照してください 。 – Pawan

+0

ヘッダークラ​​スの問題で修正されました。他にご質問がありましたらお知らせください。 –

+0

いいえ、ありがとうございました。 – Pawan