Можно ли проверить маршаллированный XML с помощью JAXB 2.0? - PullRequest
19 голосов
/ 30 апреля 2009

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

Большое спасибо.

Ответы [ 2 ]

27 голосов
/ 30 апреля 2009

Возможности валидации были расширены в JAXB 2.0 благодаря использованию схемы валидации схемы JAXP 1.3.

Где раньше вы делали:

unmarshaller.setValidating(true);

Теперь вам нужно сделать:

SchemaFactory sf = SchemaFactory.newInstance(
    javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = sf.newSchema(new File("myschema.xsd"));
unmarshaller.setSchema(schema);

Если вы передадите null в setSchema, проверка отключится.

Пожалуйста, проверьте эту ссылку .

2 голосов
/ 05 августа 2010

Если вы хотите проверить, чтобы объекты Java генерировали действительный XML в соответствии со схемой, посмотрите на проект JAXB-Verification:

https://jaxb -verification.dev.java.net /

Это плагин JAXB RI для xjc, который сгенерирует реализацию ObjectVerifier для схемы XML. Это позволяет избежать необходимости маршалировать объекты Java для проверки XML.

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