2

我有一个外部提供的 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 映射文档实现吗?

4

1 回答 1

2

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

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

不过,我会尝试创建一个 XSD 的变体来执行此操作,为其保留相同的命名空间定义并生成 jaxb 类。它应该与使用原始 XSD 生成的 XML 文档实例一起工作。

于 2012-09-11T15:56:17.040 回答