2017-12-05 13 views
0
<?xml version="1.0" encoding="UTF-8"?> 

<STATUS_UPDATE> 
    <UPDATES_COUNTER>2</UPDATES_COUNTER> 
    <LETTERS> 
     <LETTER> 
      <LETTER_KEY>key1</LETTER_KEY> 
      <STATUS>status1</STATUS> 
     </LETTER> 
     <LETTER> 
      <LETTER_KEY>key2</LETTER_KEY> 
      <STATUS>status2</STATUS> 
     </LETTER> 
    </LETTERS> 
</STATUS_UPDATE> 

私はこのxmlを持っています。私はそれからpojoを作成しようとしています。jaxb(unmarshalling)のxmlからpojoを作成する方法

@XmlRootElement(name = "STATUS_UPDATE") 
public class StatusUpdate { 

    private int updatesCounter; 


    List<Letter> letters; 

    public StatusUpdate(){ 
     letters = new ArrayList<Letter>(); 
    } 

    public StatusUpdate(int updatesCounter, List<Letter> letters){ 
     super(); 
     this.updatesCounter = updatesCounter; 
     this.letters = letters; 
    } 

    @XmlElement(name="LETTERS") 
    public List<Letter> getLetters() { 
     return letters; 
    } 

    public void setLetters(List<Letter> letters) { 
     this.letters = letters; 
    } 
    @XmlElement(name="UPDATES_COUNTER") 
    public int getUpdatesCounter() { 
     return updatesCounter; 
    } 

    public void setUpdatesCounter(int updatesCounter) { 
     this.updatesCounter = updatesCounter; 
    } 

} 

と文字クラス

@XmlRootElement(name = "LETTER") 
public class Letter { 


    public Letter(){ 

    } 

    public Letter(String letterKey,String status){ 
     this.letterKey = letterKey; 
     this.status = status; 
    } 
    String letterKey; 
    String status; 

    @XmlElement(name="LETTER_KEY") 
    public String getLetterKey() { 
     return letterKey; 
    } 
    public void setLetterKey(String letterKey) { 
     this.letterKey = letterKey; 
    } 
    @XmlElement(name="STATUS") 
    public String getStatus() { 
     return status; 
    } 
    public void setStatus(String status) { 
     this.status = status; 
    } 
} 

と、このコードsnipper文句を言わない仕事をしているようです。 私はエラーが発生せず、コードが実行され、私のupdateCounter変数には が2つ入っていますが、両方の変数がnullの文字オブジェクトの場合、リストは空です。

File file = new File("myFile.xml"); 
JAXBContext jaxbContext = JAXBContext.newInstance(StatusUpdate.class); 
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
StatusUpdate msgObject = (StatusUpdate) jaxbUnmarshaller.unmarshal(file); 

私はドキュメンテーションと例を読んでいましたが、それらのほとんどは、いずれかの変数名と私に参考になっていないのどちらか(私はしたくない)、またはされたXML elemenetsに一致するように書かれています。 アイデア私は自分の目標に非常に近い気がしますが、私は何が欠けているのか分かりません。

+0

ようgetLetters()方法に@XmlElementWrapper(name = "LETTERS")注釈を追加する必要があります。 – potame

+0

私は両方の例を見てきました。 – user3219947

答えて

0

あなたは、私は `@のXmlElement`注釈はセッターではなく、ゲッターの上に置かれるべきだと思う。この

@XmlElementWrapper(name = "LETTERS") 
@XmlElement(name = "LETTER") 
public List<Letter> getLetters() { 
    return letters; 
} 
+0

役に立たなかったしかし、私はあなたが正しい方向に私を押し込んだと思う。 – user3219947

+0

実際それはした。どうもありがとう – user3219947

関連する問題