2012-03-27 3 views
0

У меня есть Java-программа, в которой я должен проверить XML-сообщение на схему XSD. Все идет нормально. Но теперь у меня появилось новое требование, когда часть проверки отличается от содержимого XML-сообщения.Проверка XSD на основе содержимого XML

Так, исходя из значения одного поля (1), некоторые поля являются nillable или нет, а некоторые перечисления различны. Однако я не могу разобрать документ перед проверкой ... так как мне с этим справиться?

1) Имеют 2 разных файла XSD, обрабатывают XML как текст (= уродливый) и извлекают одно поле для определения того, что XSD следует использовать?

2) Имейте 3 разных XSD-файла. 2 разных варианта и один союз, чтобы мы могли проверить, как это соответствует двум параметрам? Чем мы можем правильно разобрать XML, извлечь поле и решить, какой конкретный XSD использовать для дополнительной проверки?

3) Другие варианты?

+0

Что значит «не удается проанализировать документ перед проверкой»? – maximdim

+0

Ну, если документ не подтвержден, это может быть очень недействительным XML, поэтому синтаксический анализ будет генерировать исключение. – hcpl

ответ

1

Не разбирайте его с помощью JAXB, а скорее парсером типа SAX/StAX (или DOM, если вы действительно хотите, хотя SAX будет быстрее, если вам просто нужно несколько элементов), чтобы найти и проанализировать элементы (элементы) вам нужно, чтобы определить правильную схему, которую нужно будет использовать. После того, как вы собрали достаточно информации, отмените синтаксический разбор и разберитесь с правильной проверкой схемы.

+0

Максим, спасибо. Я не знал, что смогу проанализировать его с помощью SAX без проверки в первую очередь. Это решает мою проблему. – hcpl

0

Вы пишете свою собственную проверку Java? Я бы рекомендовал использовать открытый исходный код или оплаченную проверку: XML Schema (XSD) validation tool? Инструмент.

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

Смежные вопросы