Вопрос по jaxb, xml-validation, jaxb2 – Проверьте xml, созданный с помощью jaxb, против файла xsd

9

У меня есть XML-файл, созданный с помощью Jaxb. Мне нужно проверить его по документу XSD. Можно ли просто сделать проверку без разбора. Мне нужно распечатать ошибки в файле XML.

Вы можете установить Schema и ValidationEventHandler на самого маршаллера. Он будет проверяться по схеме во время сортировки. Увидетьdocs.oracle.com/javase/6/docs/api/javax/xml/bind/… Ritesh
Одним из основных преимуществ генерации связующего кода из xsd и последующего использования кода для создания экземпляра xml является вывод действительного и правильно сформированного xml. Я не уверен, почему вы хотите подтвердить это еще раз? Aravind R. Yarram

Ваш Ответ

1   ответ
11

Да, вы можете использовать валидатор, найденный в Java от 1.5. вот ссылкаdoc

Кроме того, вы можете использовать API на основе DOM или Stream для проверки вашего XML-документа по xsd-файлу. Если вы хотите использовать SAX API для своей задачи, то вот пример:

try {
    String schemaLang = "http://www.w3.org/2001/XMLSchema";

    SchemaFactory factory = SchemaFactory.newInstance(schemaLang);

    Schema schema = factory.newSchema(new StreamSource("sample.xsd"));
    Validator validator = schema.newValidator();

    validator.validate(new StreamSource("test.xml"));

} catch (SAXException e) {
    System.out.println(" sax exception :" + e.getMessage());
} catch (Exception ex) {
    System.out.println("excep :" + ex.getMessage());
}

В противном случае вы можете использовать DOM, DOM4J или XOM API. Для дальнейшего ознакомления вы можете увидетьhere.

Есть связанныйответ в stackoverflow также.

это означает, что при запуске XML у вас есть место, удалите пробел или что-то еще в начале вашего XML, перейдите по ссылке:gonithethinker.blogspot.com/2012/06/… @AutoMeta
Вы также можете выполнить проверку перед маршалингом: JAXBSource source = new JAXBSource (jaxbContext, objectBeingMarshalled); validator.validate (источник);
я получаю это исключение саксофонного исключения: соответствие цели инструкции обработки & quot; [xX] [мМ] [lL] & quot; не допускается.

Похожие вопросы