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

Как проверить XML на схему с помощью JAXB?

Я работаю с XML и JAXB, поскольку я разбираю и сортирую XML в объекты Java и наоборот. Теперь я пытаюсь проверить наш XML на нашей схеме (test.xsd). Предположим, если в моем XML отсутствует какое-либо обязательное поле, я хотел бы знать, какое поле отсутствует после проверки XML-кода на schema test.xsd.

public void unmarshal(final InputStream is) {
    final XMLInputFactory factory = XMLInputFactory.newInstance();
    final XMLStreamReader reader = factory.createXMLStreamReader(is);

    Object req = unmarshaller.unmarshal(reader);

    // how would I validate here?
}

Как я могу проверить свой XML на схеме test.xsd. Мой путь схемы test.xsd -

C:\рабочее пространство\один\два\три\Src\Main\Java\ком\пакет\\ ар ремонт лежит \VersionOne\test.xsd

UPDATE: загрузка test.xsd как:

Schema schema = factorySchema.newSchema(new File("C:\\workspace\\one\\two\\three\\src\\main\\java\\com\\package\\serv\\ap\\versionOne\\test.xsd"));
4b9b3361

Ответ 1

Вам просто нужно установить экземпляр javax.xml.validation.Schema на Unmarshaller, прежде чем вы начнете его. Вы можете указать реализацию ValidationEventHandler на Unmarshaller, чтобы поймать любые проблемы, возникающие во время процесса немаршала.

Дополнительная информация

Я написал больше об этом случае использования в своем блоге: