Java 当列表和元素具有相同名称时解组列表

Java 当列表和元素具有相同名称时解组列表,java,xml,jaxb,unmarshalling,Java,Xml,Jaxb,Unmarshalling,我有一个棘手的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"/

我有一个棘手的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>
当我删除supplier类上的@XmlRootElement(name=“suppliers”)时,它开始正确解组

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

您的XML无效

正确的方法是首先创建
xsd模式
,然后使用
xjc
java实用程序解组/生成java类

@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')