JiBX: Как создать схему xml (xsd) на основе документа(ов) xml с помощью JiBX?

В настоящее время у меня есть куча файлов XML. К сожалению, нет XSD или любого другого файла схемы. В моей программе (Java) я использую JiBX для (не-)маршалирования файлов XML из/в POJO. Следовательно, мой вопрос: есть ли способ (с помощью JiBX) создать XSD на основе структуры, полученной из образца XML-файла? Мне нужно сделать это автоматически, потому что структура этих файлов XML очень сложна. Кстати: мне нужен XSD для автоматического создания POJO. Это требование также связано со сложностью.

Почему бы не использовать какое-либо другое решение, отличное от JiBX? Как правило, я принимаю разные решения, но было бы здорово сделать это с JiBX. Это потому, что следующим шагом будет выполнение этого на основе некоторого автоматизма (например, задание Ant).

Тем не менее, просто для игры, я уже пробовал Oxygen. Он создает некоторую схему XSD на основе одного образца XML-файла без ошибок. Результат этой процедуры (каким-то образом) не такой, как ожидалось. Например, когда внутри тега элемента есть String, Oxygen создает дополнительные правила подэлемента XSD. В результате при демаршалинге XML-файла эти строки исчезают.

Может быть, я на неправильном пути к решению? Пожалуйста, дайте мне помощь/идеи, помогающие решить проблему.

Спасибо Вам большое.


person Marco    schedule 06.09.2011    source источник


Ответы (1)


Вы не можете сгенерировать XSD-документ из образца XML-файла с помощью JIBX. Вы можете сгенерировать XSD из кода (если у вас есть POJO) с помощью инструмента Jibx2Wsdl или вы можете сгенерировать код из XSD с помощью инструмента CodeGen.

Чтобы сгенерировать XSD из XML, вы должны использовать другие инструменты, такие как рекомендуемые здесь. Инструмент inst2xsd из Apache XMLBeans работает хорошо.

Кстати, не ожидайте, что инструменты очень хорошо работают со сложными структурами. Я полагаю, что чем проще структура, тем лучше может работать инструмент. Чем сложнее это становится, тем больше вы будете вовлечены лично.

person FrVaBe    schedule 06.09.2011
comment
Спасибо за ответ. Я боялся, что с JiBX это сделать будет невозможно. - person Marco; 07.09.2011