Подтвердить что ты не робот

Можно ли проверить XML-код с JAXB 2.0?

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

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

4b9b3361

Ответ 1

Возможности проверки были расширены в 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

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

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

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