cXML 到 java 绑定问题

cXML to java bindings issues

问题:无法使用 java xjc

从 cXML.dtd 创建 java 类

我使用的版本是 1.2.032

使用的命令:xjc -dtd cXML.dtd

错误: 解析模式... [错误] 属性 "Name" 已定义。使用 来解析 是冲突。

问题 1:第 573 行左右 问题在于 "name" 作为其副本(元素和属性)。

问题 2: ShippingPaymentMethod,TermsOfDeliveryCode,TransportTerms 使用 "value" 导致重复定义。

我理解的解决方案==

我需要自定义 binding.xml ..我尝试了各种方法但无法创建正确的 binding.xml 来解决这个问题。一旦我有了正确的 xml,我就可以使用下面的命令来创建生成的 类。 xjc -b binding.xml -dtd cXML.dtd

我所需要的帮助

  1. 如果可能请提供正确的binding.xml
  2. 是否有其他方法可以为此 cXML
  3. 生成 java 映射
  4. 是否有可能 XSD 然后从 XSD 映射 java?

请推荐。

问题已由我自己解决。做了以下步骤.. 可能对其他人有用

  1. 重命名 "name" 元素 "ReturnData" in Cxml.dtd

  2. 重命名 "value" 来自 Cxml.dtd

  3. 中的 TransportTerms、ShippingPaymentMethod 和 TermsOfDeliveryCode 的属性
  4. 使用
    创建java类 xjc -dtd cXML.dtd

4.in 生成 java 类 将 xml 注释改回原始。

所以方法名称会有所不同,但它会正确读写XML。

仅供参考:您还可以使用如下所示的外部 jax-b 绑定文件来解决此问题:

<xml-java-binding-schema xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc">
  <element name="ReturnData" type="class">
    <attribute name="name" property="nameAttribute"/>
  </element>
  <element name="ShippingPaymentMethod" type="class">
    <attribute name="value" property="valueAttribute"/>
  </element>
  <element name="TermsOfDeliveryCode" type="class">
    <attribute name="value" property="valueAttribute"/>
  </element>
  <element name="TransportTerms" type="class">
    <attribute name="value" property="valueAttribute"/>
  </element>
</xml-java-binding-schema>

CXML 规范生成 JAX-B 类 非常烦人,因为他们继续使用 DTD 而不是 XML 模式。如果您想使用其他 DTD(Invoice、Catalog、Fulfill),这尤其烦人,因为它们各自重新定义所有公共元素,但使用它们自己版本的 cxml.requests、cxml.messages、cxml.responses 实体