【问题标题】:Unmarshal list when list and elements have same names当列表和元素具有相同名称时解组列表
【发布时间】:2019-11-11 15:12:42
【问题描述】:

我有一个棘手的 XML 需要解组:

<suppliers>
<suppliers id="1"/> 
...
<suppliers_options>
<suppliers_options supplr_id="1" option_type_id="1"/>
...
</suppliers_options>
<suppliers_ratios>
<spr site_id="1" supplr_id="1" ratio="0"/>
...
</suppliers_ratios>
</suppliers>

我的第一个意图是做类似的事情:

@XmlRootElement(name = "suppliers")
public class SupplierDto {
    @XmlElement(name = "suppliers")
    private Supplier suppliers;

    @XmlElementWrapper(name = "suppliers_options")
    @XmlElement(name = "suppliers_options")
    private List<SuppliersDistrib> suppliersOptions;

    @XmlElementWrapper(name = "suppliers_ratios")
    @XmlElement(name = "sr")
    private List<SuppliersRatio> suppliersRatios;
}

@XmlRootElement(name = "suppliers")
public class Supplier {
...
}

但是因为根元素和列表元素都命名为“供应商”,所以给了我一个例外:

java.lang.ClassCastException: class _.Supplier cannot be cast to _.SupplierDto (_.Supplier and _.SupplierDto are in unnamed module of loader 'app')

当我在供应商类上删除 @XmlRootElement(name = "suppliers") 时,它开始正确解组。

有人可以解释处理这个棘手的 XML 的正确方法是什么以及为什么我的解决方法有效吗?

【问题讨论】:

    标签: java xml jaxb unmarshalling


    【解决方案1】:

    您的 xml 无效。

    这里的正确方法是首先创建xsd schema,然后您将能够使用xjc java 实用程序解组/生成 java 类。

    【讨论】:

      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 2020-06-25
      • 2018-06-15
      • 2011-12-17
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      相关资源
      最近更新 更多