2

我的 XML 文件有root元素,然后有许多item元素作为根的子元素。所以它看起来像这样:

<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。我正在使用 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>
4

1 回答 1

0

如果您可以更改 XML,以便您可以拥有一个合格的类型属性(xsi 是与 XML Schema Instance 命名空间关联的前缀) ,而不是不合格的类型属性,那么: xsi:type

  • 您的架构需要为这些类型提供定义

就是这样...

如果你不能(值得一试)也许这篇关于 SO 的帖子可以帮助你。

于 2012-06-01T18:57:49.517 回答