使用x:anyType而不是xsi:type会产生Jaxb编组错误

时间:2016-12-15 18:56:45

标签: xsd jaxb any

我想避免xsi:在元素中输入并根据某些条件在运行时添加子元素

我将选项元素定义为类型xs:anyType

的以下内容
<xs:complexType name="prod">
      <xs:sequence>
        <xs:element type="xs:anyType" name="option" minOccurs="0" maxOccurs="1"</xs:element>
      </xs:sequence>
  </xs:complexType>

在元素映射中使用如下

<xs:element name="mappings">
  <xs:complexType>
    <xs:sequence>
      <xs:element type="prod" name="productionSystem" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

我需要将以下选项类型添加为以下

之一
<xs:complexType name="Text">
        <xs:sequence>
              <xs:element type="xs:short" name="id" />
              <xs:element type="xs:string" name="name" />
      </xs:sequence>
</xs:complexType>

<xs:complexType name="Value">
      <xs:sequence>
              <xs:element type="xs:short" name="id" />
              <xs:element type="xs:string" name="name" />
              <xs:element name="psValue" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                      <xs:element type="xs:string" name="value" />
                    </xs:sequence>
                </xs:complexType>
               </xs:element>
      </xs:sequence>
</xs:complexType>

所以基本上一个元素选项可以是Text或Value类型。 我想避免在xml中使用xsi:type。因此定义为xs:anyType。然而,在欠缺时间Jaxb Marshalling因错误而失败 &#34;它的任何一个超级类都知道这个背景&#34;。如何确保文本和值在Jaxb上下文中。

有人可以指导相同的。

谢谢, 长香

0 个答案:

没有答案