<?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に一致するように書かれています。 アイデア私は自分の目標に非常に近い気がしますが、私は何が欠けているのか分かりません。
よう
getLetters()
方法に@XmlElementWrapper(name = "LETTERS")
注釈を追加する必要があります。 – potame私は両方の例を見てきました。 – user3219947