我的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>
答案 0 :(得分:0)
如果您可以更改XML,那么您可以使用 合格的 类型类型属性> attribute xsi:type
(xsi是与XML Schema Instance命名空间关联的前缀)然后:
那就是它......
如果你不能(值得一试),this post on SO可以帮助你。