gpt4 book ai didi

java - 处理同一组元素中包含的不同对象类型

转载 作者:行者123 更新时间:2023-11-30 11:36:13 25 4
gpt4 key购买 nike

我有一个如下所示的 XML 文档:

请注意,我无法更改架构,因为它是标准 XML 架构(国会图书馆 METS)的一部分。

<amdSec ID="AMDSEC001">
<digiprovMD ID="DMD001">
<mdWrap MDTYPE="OBJECT">
<xmlData>
<object xsi:type="file">
.....
</object>
</xmlData>
</mdWrap>
</digiprovMD>
<digiprovMD ID="DMD001_EVENT">
<mdWrap MDTYPE="EVENT">
<xmlData>
<event xsi:type="event">
.....
</event>
</xmlData>
</mdWrap>
</digiprovMD>
</amdSec>

如你所见,内部元素<mdWrap>可以包含不同类型的元素;在这种情况下,它们是 <event><object> ,但它不仅限于这两种类型。创建两个类(如下所示),编码没问题,但这不适用于解码。

class ObjectMDWrap {
@XmlElementWrapper(name = "xmlData")
@XmlElement(name = "object")
List<MyObject> object; //Wrapped in list to use @XmlElementWrapper
}

class EventMDWrap {
@XmlElementWrapper(name = "xmlData")
@XmlElement(name = "event")
List<MyEvent> event; //Wrapped in list to use @XmlElementWrapper
}

我该怎么做才能让 JAXB 解码 MDWrap 的正确“类型”?

最佳答案

我认为,在这种情况下最好的解决方案是使用 XJC 生成 POJO 类工具。

  1. 下载描述 XML 文件的 XSD 文件。
  2. 使用XJC工具将 XSD 文件转换为 POJO 类。如果 XSD 不正确 - 修复它。
  3. 如果您需要在生成的类中进行一些更改。
  4. 在编码/解码过程中使用此类。

关于java - 处理同一组元素中包含的不同对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14615322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com