Что вы используете для проверки на соответствие XML-схеме?

StackOverflow https://stackoverflow.com/questions/153835

  •  03-07-2019
  •  | 
  •  

Вопрос

Когда я хочу проверить свои XML-документы на соответствие схеме в моей серверной Java, я использую встроенную реализацию JRE Xerces и javax.xml.validation.Схему.Это работает нормально, но когда проверка завершается неудачей, Xerces выдает сообщения об ошибках, которые очень близки к бесполезным, например:

cvc-minLength-valid: Value '' with length = '0' is not facet-valid with respect to minLength '1' for type 'PopulatedStringType'

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

Итак, мой вопрос в том, используете ли вы альтернативный способ проверки XML по схеме, который дает более полезный результат при сбое проверки?

Пожалуйста, не говорите, что это серверная Java, поэтому, пожалуйста, не говорите "используйте XML Spy" или что-то подобное.

Это было полезно?

Решение

В вашем обработчике для проверки вы должны получить исключение SAXParseException с этим сообщением, а также номер столбца и номер строки в XML-файле.Разве это не так?

Другие советы

Мы используем Oracle XDK (набор для разработки XML) который включает в себя xmlparserv2.jar с проверяющим синтаксическим анализатором и XSLT 2.0.Он использует JAXB API, поэтому вам нужно будет только добавить его в свой classpath и изменить свой импорт.Он выдает ошибки, которые не являются идеальными, но я бы сказал, более понятными, чем ваш пример.

xmlstarlet(xmlstar.sourceforge.net /) - это набор инструментов командной строки.вы могли бы запустить его с помощью Runtime.exec() для данного xml (при условии, что xml находится в файле).

Мы используем Колесико.

Castor - это платформа привязки данных с открытым исходным кодом для Java [tm].Это кратчайший путь между объектами Java, XML-документами и реляционными таблицами.Castor обеспечивает привязку Java-to-XML, сохранение Java-to-SQL и многое другое.

Если у вас возникли проблемы с интерпретацией ошибок Xerces и вы хотели бы получить что-то, что помогло бы выделить, где в вашем документе вы нарушили правила, ознакомьтесь с некоторыми инструментами разработки XML, такими как Кислород.

alt text
(источник: oxygenxml.com)

Как только вы свяжете схему с вашим экземпляром XML-документа, редактор выделит нарушающую область документа и предоставит вам описание нарушения.

Кроме того, вы можете использовать различные механизмы для выполнения проверки:

oXygen имеет встроенную поддержку для:Xerces, LIBXML, XSV, Saxon SA, MSXML4.0, MSXML .NET и SQC.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top