【问题标题】:JAXB and XSD: element, complexType by attribute valueJAXB 和 XSD:元素,complexType 按属性值
【发布时间】: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>

【问题讨论】:

    标签: xsd jaxb


    【解决方案1】:

    如果您可以更改 XML,以便您可以使用 qualified type 而不是不合格的 type 属性> 属性xsi:type(xsi 是与 XML Schema Instance 命名空间关联的前缀)然后:

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

    原来如此……

    如果你不能(值得一试)也许this post on SO 可以帮助你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多