Как использовать XML-схему для проверки @ResponseBody, упорядоченной JAXB - PullRequest
3 голосов
/ 22 марта 2012

У меня есть система, возвращающая много XML-файлов с использованием @ResponseBody и @XmlElement marshalling (JAXB).

Каков наилучший способ проверки полученного XML-кода с использованием созданной схемы?

Мне все еще нужно пройтись по элементам и проверить их, но проверка схемы XML сделает вторую часть очень простой.

Ответы [ 2 ]

2 голосов
/ 22 марта 2012

Spring делает это простым для вас (при условии, что вы используете Jaxb2Marshaller):

<bean id="marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
  <property name="schema" value="file:/some/path/schema.xsd"/>
</bean>
1 голос
/ 22 марта 2012

Настройка схемы XSD для маршаллера и демаршалера JAXB:

SchemaFactory schemaFactory = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI);
InputStream schemaStream = openMySchemaFileStream();
Schema schema = schemaFactory.newSchema(new StreamSource(schemaStream));    
marshaller.setSchema(schema);
unmarshaller.setSchema(schema);

Проверка строки XML путем ее демаршаллинга:

Reader reader = new StringReader(xml);
StreamSource source = new StreamSource(reader);
unmarshaller.unmarshal(source, YourJAXBClass.class);

Проверка объекта JAXB путем маршаллинга в SAX 'DefaultHandler, который ничего не делает:

marshaller.marshal(obj, new DefaultHandler());
...