2012-04-03 4 views
0

작동하지 않습니다이이 내 파서 클래스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; 
    } 
} 

이 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; 
    } 
} 

이는 Header.java 내가 출력으로 null을 얻고있다

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; 

} 

파일입니다, 바인딩이 발생하지 않는 내가 왜 몰라?

+0

아무도 나를 도와 주 시겠어요처럼 보이게하려는 의미, 당신은 당신의 XML은 반면

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

처럼 보이게하려는 의미, 방법이 문제를 해결하려면? – Pawan

답변

1

이라는 개체에 <header>이 포함되어 있다고 생각하면 <Data> 태그가 JAXB에 있다고 생각합니다. 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

관련 문제