Создание классов привязки Java с использованием файла XML без файла схемы XSD? Использование любого фреймворка Castor или JAXB

У меня есть требование создать классы модели Java (классы привязки) из файлов XML. К сожалению, у меня нет схемы XSD. Есть много уже существующих XML.

Как ни странно, Castor и JAXB используют схему XSD для создания классов модели привязки. Что делать, если у вас нет схемы? Не все XML создаются с использованием схемы!


person supernova    schedule 16.09.2011    source источник


Ответы (2)


Вы можете использовать инструмент вывода схемы, например Trang. Может производить xsd из xml. Затем вы можете настроить сгенерированную схему или просто передать ее прямо в JAXB / Castor и т. Д.

person Sahil Muthoo    schedule 16.09.2011
comment
Ткс. как упоминалось в другом комментарии. Я пробовал trang / XMLSpy для генерации XSD. Но проблема в том, что оба XSD очень разные. Шпион Infact XML проверяет свой XSD на моих примерах XML, но не работает с сгенерированной схемой !!! Также я вижу, что схема, сгенерированная шпионом XML, имеет ДАННЫЕ из моего примера XML !! - person supernova; 16.09.2011
comment
Вы можете отобразить классы вручную. Достаточно нескольких аннотаций. - person Sahil Muthoo; 16.09.2011
comment
Мои XML-файлы очень большие и сложные. Однако я никогда не отображал классы. Если мне нужно сопоставить каждый тег / элемент, это может стать громоздким! - person supernova; 16.09.2011

Причина того, что технологии привязки XML не генерируют классы Java из XML, заключается в том, что это дополнительный уровень сложности:

  • Является ли этот единственный элемент XML действительно одним элементом или коллекцией размером 1?
  • Данные в образце XML выглядят как int, но разрешено ли содержимое String?

У вас есть несколько вариантов. Во-первых, вы можете использовать инструмент для создания схемы XML из XML, а затем сгенерировать из нее классы. Или вы можете аннотировать существующие классы, чтобы сопоставить их с XML:

person bdoughan    schedule 16.09.2011
comment
Ткс. Теперь я понимаю, почему XSD выбирается castor / JAXB, а не XML. Но я видел в прошлом и сейчас, что есть XML, созданные без XSD / DTD. В любом случае ... У меня нет XSD, поэтому я попробовал trang / XMLSpy для генерации XSD. Но проблема в том, что оба XSD очень разные. Шпион Infact XML проверяет свой XSD на моих примерах XML, но не работает с сгенерированной схемой !!! Также я вижу, что схема, сгенерированная шпионом XML, имеет ДАННЫЕ из моего примера XML !! - person supernova; 16.09.2011