是否可以为相同的xs:simpleContent元素创建单个类映射?

时间:2012-09-10 11:21:10

标签: java jaxb2 xjc xjb

我有一个外部提供的XSD,它有许多相同的元素,代表一个具有可选货币属性的价格。

<xs:complexType name="someType">
  <xs:sequence>
    <xs:element name="rrp" minOccurs="0">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:decimal">
            <xs:attribute name="currency" type="xs:string"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>
    <xs:element name="whs" minOccurs="0">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:decimal">
            <xs:attribute name="currency" type="xs:string"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
</xs:complexType>

我希望将它转换为一个公共类而不是许多静态类,这是否可以使用XJB映射文档?

1 个答案:

答案 0 :(得分:2)

我不知道用JAXB注释做到这一点的方法,但这并不是说不可能。也许有人会在那里给你一个更好的答案。

解决这个问题的理想方法显然是更改XSD,以便您拥有“PriceWithcurrency”xs:complexType定义,并且每个元素都声明为该类型。但是你说你无法改变它。

我试过的一件事就是创建一个XSD的变体来做到这一点,为它保留相同的命名空间定义并生成jaxb类。它应该与使用原始XSD生成的XML文档实例一起使用。