Программное создание XML-документа с использованием XSD

Мне нужно создать документы XML, используя встроенные пакеты java org.w3c.dom или jdom, соответствующие набору файлов XSD. Файлы XSD похожи, но не одинаковы. По сути, мне нужно создать файл XML в соответствии с XSD, предоставленным мне динамически.

Как лучше всего это сделать. Я проверил пакет Validator, в нем нет таких функций, как просмотр вперед или итераторы для возможных элементов в данном узле контекста.

В идеале я смотрю на архитектуру типа SAX, где я реализую элемент, когда меня просят предоставить в контекстно-свободной манере. Двигатель должен собраться и дать мне дерево дома в конце.

Это колесо уже изобретено?

Спасибо..


person srini.venigalla    schedule 29.09.2009    source источник


Ответы (2)


org.w3c.dom не поддерживает схемы XML. Для JDom можно использовать схемы для проверки документа, но нет поддержки для создания документов.

У вас есть два варианта:

  1. Используйте JDom для чтения схемы, ее анализа и создания документа в соответствии с этим XML-документом (схема также всегда является допустимым XML-документом).

  2. Вы можете использовать средство отображения XML, например Castor. Castor может читать схему и создавать набор классов Java, которые позволяют создавать документы, соответствующие указанной схеме.

Последний подход может не сработать в вашем случае, так как Castor будет генерировать разные классы Java для схожих структур XSD, если только они не определены в одном и том же документе, поэтому вы не сможете легко повторно использовать общий код. Обходной путь заключается в том, чтобы позволить Castor сгенерировать код, а затем написать сценарий или что-то подобное для копирования/объединения общих частей XSD в один и тот же пакет Java.

person Aaron Digulla    schedule 29.09.2009
comment
Спасибо за ответ. Я знаком с castor, поэтому совершенно уверен, что он не подойдет под мои требования. Возможно, JDom — это то, что вам нужно. Мне любопытно, как XML-редакторы, такие как подключаемый модуль NetBeans, XMLSpy, Oxygen и т. д., могут предоставлять контекстно-зависимые подсказки и прогнозы. Я надеялся, что есть библиотека/проект с открытым исходным кодом, который может сделать это из коробки. - person srini.venigalla; 30.09.2009
comment
Нет проблем с получением исходных кодов XML-редакторов Netbeans или Eclipse и их просмотром. - person Aaron Digulla; 30.09.2009

В настоящее время я разбираю XSD и создаю не XML-документ из его частей, а что-то еще. Я обнаружил, что XSOM очень полезен. Взгляните на этот короткое небольшое руководство, так как не очевидно, как его использовать сразу.

Саму библиотеку несложно использовать, как только вы освоите ее, и вы сможете получить любую информацию, найденную в XSD, то есть атрибуты, ограничения и элементы, которые вы можете использовать для создания XML-файла.

person Casey    schedule 16.11.2009
comment
Спасибо, это очень близко к тому, что я искал. - person srini.venigalla; 18.11.2009