<?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。
@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;
}
}
这个代码片段似乎无法完成这项工作。 我没有错误,代码运行,我的updateCounter变量得到2, 但是我的列表是空的,只有一个字母对象,两个变量都为空。
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 :(得分:0)
您需要将@XmlElementWrapper(name = "LETTERS")
注释添加到getLetters()
方法,例如
@XmlElementWrapper(name = "LETTERS")
@XmlElement(name = "LETTER")
public List<Letter> getLetters() {
return letters;
}