问题:无法使用java xjc
从cXML.dtd创建java类 我使用的版本是1.2.032
使用的命令:xjc -dtd cXML.dtd
错误: 解析模式...... [ERROR]财产"名称"已定义。使用< jaxb:property>解决这个问题 是冲突。
问题1:行号约为573 问题在于"名称"作为它的副本(元素和属性)。
问题2: ShippingPaymentMethod,TermsOfDeliveryCode,TransportTerms使用" value"导致重复定义。我理解的解决方案==
我需要自定义binding.xml ..我尝试了各种方法,但无法创建正确的binding.xml来解决此问题。一旦我有正确的XML,我可以使用以下命令来创建生成的类。 xjc -b binding.xml -dtd cXML.dtd
我需要的帮助
请建议。
答案 0 :(得分:2)
仅供参考:您也可以使用外部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>
由于他们继续在XML模式上使用DTD,因此生成JAX-B类非常烦人。如果你想使用其他DTD(Invoice,Catalog,Fulfill),这会特别烦人,因为它们每个都重新定义所有常见元素,但使用自己版本的cxml.requests,cxml.messages,cxml.responses实体
答案 1 :(得分:0)
我自己解决的问题。做了以下步骤..可能对其他人有用
在Cxml.dtd中重命名“name”元素“ReturnData”
从Cxml.dtd中的TransportTerms,ShippingPaymentMethod和TermsOfDeliveryCode重命名“value”attr
使用
创建java类
xjc -dtd cXML.dtd
4.in生成的java类将xml注释更改回原始版本。
因此方法名称会有所不同,但它会读取和写入正确的XML。