[英]Error reading XML via JaxB
這是我的課程結構:
@XmlRootElement(name="System")
public class SystemDTO () {
@XmlElement(name="ID")
public void setId(String id) {
this.id = id;
}
@XmlElement(name="Source")
public void setSource(SourceDTO source) {
this.source = source;
}
}
@XmlRootElement(name="Source")
class SourceDTO {
@XmlElement(name="Name")
public void setName(String name) {
this.name = name;
}
}
這是我的XML文件:
<System>
<ID>e5b160d0</ID>
<Source>
<Name>Kron</Name>
</Source>
</System>
問題是Source始終為null。 我沒有例外,它只是空值。 我試圖僅使用Source標記,並且可以很好地拾取Name,但是當我將其添加為System類的一部分時,它似乎無法正常工作。
另外,我嘗試這樣做,並且在System中有一個字符串成員變量作為名稱:
@XmlElementWrapper(name="Source")
@XmlElement(name="Name")
但這會導致異常。 有任何想法嗎?
測試班
public class JaxbTest {
public static void main(String[] args) {
String xml = "<System>\n" +
" <ID>e5b160d0</ID>\n" +
" <Source>\n" +
" <Name>Kron</Name>\n" +
" </Source>\n" +
"</System>";
SystemDTO systemDTO;
try {
JAXBContext jaxbContext = JAXBContext.newInstance(SystemDTO.class);
StringReader reader = new StringReader(xml);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
systemDTO = (SystemDTO) jaxbUnmarshaller.unmarshal(reader);
System.out.println(systemDTO.getSource().getName());
} catch (JAXBException e) {
e.printStackTrace();
}
}
}
源DTO
@XmlRootElement(name = "Source")
class SourceDTO {
private String name = null;
public String getName() {
return name;
}
@XmlElement(name = "Name")
public void setName(String name) {
this.name = name;
}
}
系統DTO
@XmlRootElement(name = "System")
public class SystemDTO {
private String id;
private SourceDTO source;
public String getId() {
return id;
}
public SourceDTO getSource() {
return source;
}
@XmlElement(name = "ID")
public void setId(String id) {
this.id = id;
}
@XmlElement(name = "Source")
public void setSource(SourceDTO source) {
this.source = source;
}
}
我看到的一個可能的問題是,您在XML中聲明了2個“ Root”元素。 在您的Source類上嘗試@XmlType:
@XmlType(name="Source")
class SourceDTO {
...
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.