【发布时间】: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