我有一個簡單的xml unmarshall。但是在輸出中只有一個空列表。沒有例外被拋出。 這是第三方生成的XML,我需要使這個工作沒有任何改變的XML。Jaxb unmarshalls命名空間空列表
的XML:
<Animal xmlns="http://allmycats.com/serviceplatform/1.0/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Cat z:Id="i1" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<name>kitty</name>
</Cat>
<Cat z:Id="i2" xmlns:z="http://schemas.microsoft.com/2003/10/Serialization/">
<name>kitty2</name>
</Cat>
</Animal>
的POJO bean的動物:
@XmlRootElement(name = "Animal",namespace = "http://allmycats.com/serviceplatform/1.0/")
public class Animal{
List<Cat> cats;
@XmlElement(name = "Cat")
public List<Cat> getCats() {
return cats;
}
public void setCats(List<Cat>cats) {
this.cats= cats;
}
}
的POJO豆的貓
@XmlRootElement(name = "Cat")
public class Cat {
private String zId;
private String name;
@XmlAttribute(name = "Id", namespace="http://schemas.microsoft.com/2003/10/Serialization/")
public String getzId() {
return zId;
}
public void setzId(String zId) {
this.zId = zId;
}
@XmlElement(name = "name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
的解組代碼:
File file = new File(filepath);
System.out.println("file exists? : "+ file.exists()); // prints true
JAXBContext jaxbContext = JAXBContext.newInstance(Animal2.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Animal2 animals = (Animal2)jaxbUnmarshaller.unmarshal(file);
System.out.println("--file size: "+animals.getCats().size());
最後一行給出一個空指針異常。
我在BEAN類中的命名空間做錯了什麼?我是Jaxb的新手,現在這個問題讓我煩惱了3天! 我之前問過這個問題,但無法得到正確的答案,這是一個更精確的問題。
@Zielu ..是的,它是一個重複的,但也許我的問題不早了明確和解決方案沒有工作。因此我再次用乾淨的代碼和xml來問它。您的意見是讚賞,但我仍然堅持這個問題。 – 2015-02-23 17:17:32