首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >JAXB:如何在包装器中对不同类型的对象列表进行编组?

JAXB:如何在包装器中对不同类型的对象列表进行编组?
EN

Stack Overflow用户
提问于 2017-10-13 10:55:13
回答 1查看 1K关注 0票数 0

我很难用JAXB解析以下xml:

代码语言:javascript
运行
复制
<?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

代码语言:javascript
运行
复制
@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有任何解决方案吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-13 11:48:54

我假设您的dashlet类是像class Chartdashlet extends Dashletclass Incidentchartdashlet extends Dashlet那样定义的。

那么,处理混合dashlet列表的首选JAXB方法是使用@XmlElements注释:

代码语言:javascript
运行
复制
@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;
} 
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46728271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档