2014-04-26 2 views
0

임 중첩 요소가있는 Java 클래스에서 XML을 만들려고합니다. 내 실수는 어디로 가고 무엇을 바꿔야합니까 감사합니다!중첩 된 XML 요소를 마샬링하지 못했습니다.

내 메인 클래스 :

String MY_XML = "my path..."; //hier is the path... 

JAXBContext context = JAXBContext.newInstance(MasterDataRM.class); 
Marshaller m = context.createMarshaller(); 
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); 

Master temp = new Master(); 
temp.setTransactionStatus("AlmostOk"); 
m.marshal(temp, new File(MY_XML)); 
m.marshal(temp, System.out); 

내 클래스는 정렬 화 :

@XmlAccessorType(XmlAccessType.FIELD) 
@XmlRootElement 
public class Master { 

    @XmlElement 
    protected Date ResponseDatetime = new Date(); 

    @XmlElement 
    protected Transaction transaction; 


    public void setResponseDatetime(Date date){ 
     this.ResponseDatetime = date; 
    } 

    public Date getDate(){ 
     return ResponseDatetime; 
    } 

    public static class Transaction{ 
     @XmlElement 
     String status = "OK"; 
    } 

    public void setStatus(String status){ 
     transaction.status = status; // This throws the NullPointerException !!! 
    } 

    public String getStatus(){ 
     return transaction.status; 
    } 

답변

0
transaction.status = status; // This throws the NullPointerException !!! 

당신이 내부 정적 클래스를 초기화되지 않기 때문에이 모든 방법 전에 인스턴스 변수를 초기화 기억 사용자, 그 이유는 무엇입니까 NLP

첫 Transcation 객체를 만들고

@XmlRootElement 
@XmlAccessorType(XmlAccessType.FIELD) 
public class Master { 

    public Master() { 
    } 

    @XmlElement 
    protected Date ResponseDatetime = new Date(); 

    @XmlElement 
    protected Transaction transaction; 

    public void setResponseDatetime(Date date) { 
     this.ResponseDatetime = date; 
    } 

    public Date getDate() { 
     return ResponseDatetime; 
    } 

    public static class Transaction { 
     @XmlElement 
     String status = "OK"; 
    } 

    public void setStatus(String status) { 
     transaction.status = status; // This throws the NullPointerException !!! 
    } 

    public String getStatus() { 
     return transaction.status; 
    } 

    public Transaction getTransaction() { 
     return transaction; 
    } 

    public void setTransaction(Transaction transaction) { 
     this.transaction = transaction; 
    } 

} 

습지 등

temp.setTransaction(new Master.Transaction()); 

업데이트로 클래스를 외부 클래스 객체를 사용하여 설정이

JAXBContext jaxbContext = JAXBContext.newInstance(Master.class); 
     Marshaller jaxbMarshaller = jaxbContext.createMarshaller(); 
     jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 

     Master temp = new Master(); 
     temp.setTransaction(new Master.Transaction()); 
     temp.setStatus("AlmostOk"); 
     jaxbMarshaller.marshal(temp, new File(MY_XML)); 
     jaxbMarshaller.marshal(temp, System.out); 
관련 문제