java - 当列表和元素具有相同名称时解组列表
问题描述
我有一个棘手的 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 的正确方法以及为什么我的解决方法有效吗?
解决方案
您的 xml 无效。
这里的正确方法是先创建xsd schema
,然后您将能够使用xjc
java 实用程序解组/生成 java 类。
推荐阅读
- php - 尝试在 DUPLICATE 查询上修复此 INSERT UPDATE
- php - 在 for 循环中添加所有先前的数字
- node.js - $sum 返回 0 的 Mongoose 聚合?
- mysql - 只要我喜欢,如何通过 django 锁定 mysql 数据库表
- postgresql - 代表 PostgreSQL 中的未来时间
- javascript - ScrollSpy 不工作 Bootstrap 4 和照片库不工作
- mongodb - 如何在猫鼬中多参考
- react-native - 为什么 react native app 一直在询问被删除的 main.js?
- html - 如何使用 background-image: 固定 CSS 属性打印背景?
- android - 如何在 SplashActivity 完成之前使 MainActivity 准备好?