我很难用JAXB解析以下xml:
<?xml version="1.0" encoding="utf-8"?>
<dashboardreport name="exampleDashboard" version="6.5.6.1013" reportdate="2016-12-16T11:05:19.329+01:00" description="">
<data>
<incidentchartdashlet name="Incident Chart" description="" />
<chartdashlet name="WebRequestTime" showabsolutevalues="false" />
<chartdashlet name="WebServiceTime" showabsolutevalues="false" />
</data>
</dashboardreport>
我使用以下java类来解除xml的封送: Dashboardreport.java
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "dashboardreport")
public class Dashboardreport {
@XmlElementWrapper(name = "data")
@XmlElement(name = "chartdashlet")
protected List<Chartdashlet> chartdashlets;
@XmlElementWrapper(name = "data")
@XmlElement(name = "incidentchartdashlet")
protected List<Incidentchartdashlet> incidentchartdashlets;
@XmlAttribute(name = "name")
protected String name;
}
我只想解除xml的封送,而不使用围绕意外图表differ和chartdashlet的包装类,因为这两种类型差别很大。我只能使用XmlElementWrapper注释一次,因此只有chartdashlet被填充,而意外chartdashlet是空的。在不使用单独包装器类的情况下,JAXB有任何解决方案吗?
发布于 2017-10-13 11:48:54
我假设您的dashlet类是像class Chartdashlet extends Dashlet
和class Incidentchartdashlet extends Dashlet
那样定义的。
那么,处理混合dashlet列表的首选JAXB方法是使用@XmlElements
注释:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "dashboardreport")
public class Dashboardreport {
@XmlElementWrapper(name = "data")
@XmlElements({
@XmlElement(name = "chartdashlet", type = Chartdashlet.class),
@XmlElement(name = "incidentchartdashlet", type = Incidentchartdashlet.class)
})
protected List<Dashlet> dashlets;
@XmlAttribute(name = "name")
protected String name;
}
https://stackoverflow.com/questions/46728271
复制相似问题