【发布时间】:2012-06-06 13:24:25
【问题描述】:
我的 XML 文件有 root 元素,然后有许多 item 元素作为 root 的子元素。
所以它看起来像这样:
<root>
<item type=type1 id=1>...</item>
<item type=type1 id=2>...</item>
<item type=type2 id=3>...</item>
<item type=type3 id=4>...</item>
</root>
每个item 元素都有一个属性来说明我们正在处理的项目类型。
在当前的 XSD
xs:element name="root" 与 complexType 一样,其序列为 item complexType。
我正在使用 JAXB 将我的 XML 文件映射到 Java 对象。现在我必须获取所有项目并根据它们的类型创建新的特定对象。它变得越来越复杂,因为每种项目类型都有自己的一组字段(子节点)。我有没有机会告诉 JAXB(通过 XSD)有不同类型的 items 并根据项目的 name 属性创建我需要的对象?因此,对于每个项目,都应该有单独的 complexType(将映射到 java 对象)。
如果我的 XML 看起来像这样就可以了:
<root>
<item1 id=1>...</item1>
<item1 id=2>...</item1>
<item2 id=3>...</item2>
<item3 id=4>...</item3>
</root>
【问题讨论】: