Java: есть ли возможность проверить строку на SimpleType из схемы XML с Java? - PullRequest
0 голосов
/ 29 июля 2011

У меня действительно сложная XML-схема (она разработана Swift :-) Существует много объявленных простых типов, которые будут использоваться в проверке схемы.

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

Я не хочу генерировать объектную модель Java из схемы с помощью Jaxb, потому что схемадействительно сложный, и порождение приводит к почти 100 Java-классам только для одного определения схемы.

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Я не знаю ни одной модели валидации Java, автоматически генерируемой из простых типов XSD.Даже с JAXB или XMLBeans ограничения, такие как шаблоны XSD, не применяются к сгенерированному Java-коду (вы видите методы получения / установки для объектов воспроизведения String).

Поскольку вы не хотите использовать модель JAXB, вы можете просто использовать, например, проверку XSD процессора XML.Поэтому для проверки значений вам нужно создать действительный (минимальный) XML и обработать его с помощью XML-процессора, поддерживающего проверку XSD (Xerces DOM будет в порядке).Если проверка прошла успешно, вы знаете, что входные данные верны.

0 голосов
/ 29 июля 2011

Вы можете потенциально использовать javax.xml.validation API и проверять небольшие фрагменты XML, которые вы производите в памяти и которые содержат ваши простые типы.

Вы можете найти некоторые примеры использования API здесь .Вместо загрузки исходного XML-файла с диска вы будете передавать его, например, из ByteArrayInputStream.

Возможно, вам потребуется сгенерировать другую схему, которая будет зависеть от XSD из Swift, чтобы иметь элемент для каждого простого типа для создания XMLОтрывки проще.

РЕДАКТИРОВАТЬ : Другая возможность - использовать одну из библиотек Java, которые работают с SWIFT.Некоторый обзор дан в этом вопросе: Библиотека Java SWIFT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...