我要解组一个棘手的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 {
...
}
但是因为root元素和list元素都命名为“ suppliers”,所以给了我一个例外:
java.lang.ClassCastException: class _.Supplier cannot be cast to _.SupplierDto (_.Supplier and _.SupplierDto are in unnamed module of loader 'app')
当我在供应商类上删除 @XmlRootElement(name =“ suppliers”)时,它开始正确地解组。
有人可以解释处理这种棘手的XML的正确方法是什么,为什么我的解决方法行得通吗?
答案 0 :(得分:0)
您的xml无效。
这里的正确方法是首先创建xsd schema
,然后您就可以使用xjc
java实用工具来解组/生成Java类。