проверить XML-файл по XML-схеме - PullRequest
2 голосов
/ 05 марта 2010

это проверка файла XML (например, marshalledfile.xml) по схеме XML (например, schemafile.xsd). мы используем jaxb для объединения java-объектов в xml-файл.

  1. как лучше это сделать?

  2. Может ли кто-нибудь привести простой пример того, как это сделать?

Ценю вашу помощь.

Спасибо, Ало

1 Ответ

5 голосов
/ 05 марта 2010

Вы можете установить схему непосредственно в Marshaller.Сначала вам нужно создать экземпляр схемы (пакет javax.xml.validation):

SchemaFactory factory = SchemaFactory.newInstance(
            XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("schema1.xsd")));

Теперь, когда у вас есть схема, просто установите свойство в Marshaller для проверки сгенерированного XML:

MovieLibrary library = ...; // <-- your JAXB-annotated tree

JAXBContext ctx = JAXBContext.newInstance(MovieLibrary.class);
Marshaller marshaller = ctx.createMarshaller();
marshaller.setSchema(schema);
marshaller.marshal(new JAXBElement<MovieLibrary>(new QName("movieLibrary"), 
                                                    MovieLibrary.class, library),
                   new FileOutputStream("/tmp/library.xml"));

См. Также «Как проверить ввод по схеме XML?»в Jarfiller JAXB Guide .

...