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

У меня есть файл xml, созданный с помощью jaxb. Мне нужно проверить его на соответствие документу xsd. Можно ли просто выполнить проверку без декомпозиции. Затем мне нужно распечатать ошибки в файле xml.


person Anand B    schedule 08.06.2012    source источник
comment
Одним из основных преимуществ создания кода привязки из xsd и последующего использования кода для создания экземпляра XML является вывод действительного и правильно сформированного XML. Я не уверен, почему вы хотите подтвердить это снова?   -  person Aravind Yarram    schedule 08.06.2012
comment
Вы можете установить Schema и ValidationEventHandler на самом упаковщике. Он будет проверяться по схеме во время сортировки. См. docs.oracle.com/javase/6/docs/api/javax/xml/bind/   -  person Ritesh    schedule 10.06.2012


Ответы (1)


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

Помимо этого, вы можете использовать API на основе dom или потока для проверки вашего 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. Дополнительные сведения см. здесь .

Существует связанный ответ также в stackoverflow.

person Forhad    schedule 08.06.2012
comment
Вы также можете проверить перед сортировкой: JAXBSource source = new JAXBSource(jaxbContext, objectBeingMarshalled); валидатор.валидате(источник); - person Ritesh; 10.06.2012
comment
я получаю это исключение exeception sax: соответствие цели инструкции обработки [xX][mM][lL] не разрешено. - person AutoMEta; 14.02.2013
comment
это означает, что в начале вашего XML есть пробел, удалите пробел или что-то еще в начале вашего XML, перейдите по ссылке: gonithethinker.blogspot.com/2012/06/ @AutoMeta - person Forhad; 19.02.2013