请帮我找出这个 JAXB 配置有什么问题。我要解析这个 XML。它抛出异常。
异常:
group : DummyMaster@ae7b77
group : master
group : null
Exception in thread "main" java.lang.NullPointerException
at TestDummy.main(TestDummy.java:21)
XML:
<?xml version="1.0" ?>
<master name="master">
<detail name="detail1">
</detail>
<detail name="detail2">
</detail>
</master>
测试:
JAXBContext jaxbContext = JAXBContext.newInstance(DummyMaster.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
DummyMaster group = (DummyMaster) jaxbUnmarshaller.unmarshal(new File("test1.xml"));
System.out.println("group : "+group);
System.out.println("group : "+group.getName());
System.out.println("group : "+group.getDetails());
System.out.println("group : "+group.getDetails().size());//Line 21
大师:
@XmlRootElement(name="master")
public class DummyMaster {
private String name;
private List<DummyDetail> details;
@XmlAttribute
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElementWrapper
@XmlElement
public List<DummyDetail> getDetails() {
return details;
}
public void setDetails(List<DummyDetail> details) {
this.details = details;
}
}
详细信息:
@XmlRootElement(name="detail")
public class DummyDetail {
private String name;
@XmlAttribute
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
最佳答案
更改您的 DummyMaster 类删除 @XmlElementWrapper 并添加 @XmlElement(name = "detail")
@XmlRootElement(name="master")
public class DummyMaster {
private String name;
private List<DummyDetail> details;
@XmlAttribute
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@XmlElement(name = "detail")
public List<DummyDetail> getDetails() {
return details;
}
public void setDetails(List<DummyDetail> details) {
this.details = details;
}
}
关于java - JAXB 简单 XML 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26056598/