2016-12-01 17 views
-1

Проблемы: Невозможно создать классы Java от cXML.dtd с помощью Java XJCCXML на яву привязки вопросы

версии Я использую это 1.2.032

используется команда: XJC -dtd cXML.dtd

Ошибка: разоблачение схемы ... [ERROR] Свойство «Имя» уже определено. Использовать < jaxb: свойство> разрешить - конфликт.

Выпуск 1: Номер линии около 573 вопроса с «именем», как его дубликат (элемент, а также атрибут).

выпуск 2: ShippingPaymentMethod, TermsOfDeliveryCode, TransportTerms использует «значение», которое выдает повторяющиеся определения.

Решение, как я понимаю ==

мне нужен пользовательский binding.xml .. Я пробовал различные способы, но не в состоянии создать правильный binding.xml, чтобы решить эту проблему. как только у меня есть правильный xml, я могу использовать следующую команду для создания сгенерированных классов. XJC -b binding.xml -dtd cXML.dtd

Что мне помочь мне нужно

  1. пожалуйста обеспечивают правильную binding.xml, если это возможно
  2. Есть ли альтернативный способ создания Java-отображения для этого CXML
  3. Есть ли возможности иметь XSD, а затем иметь java-отображение из XSD?

Просьба предложить.

ответ

0

Вопрос Решил сам. сделал следующие шаги .. может быть полезным для других

  1. Переименован элемент "имя" "ReturnData" в Cxml.dtd

  2. Переименован "значение" атр из TransportTerms, ShippingPaymentMethod и TermsOfDeliveryCode в Cxml.dtd

  3. создания классов Java, используя
    XJC -dtd cXML.dtd

4.in Сгенерированные классы java изменили аннотацию xml на оригинал.

Таким образом, имена методов будут разными, но они будут читать и писать правильный XML.

0

FYI: вы можете решить эту проблему с помощью внешнего JAX-б связывания файла, который выглядит следующим образом:

<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.ответы лица