Настроить сопоставление Spring 4.1 O/X для проверки входящего XML на основе схемы?
Spring 4 O/X поддерживает несколько XML unmarshallers за его абстракцией. Мы используем JAXB2.
Может ли Spring проверить входящий XML по схеме? Я не нашел ничего ни в официальной документации, ни в схеме spring-oxm, описывающей конфигурацию. Это моя текущая конфигурация, довольно стандартная.
<bean id="jaxb2Marshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="marshallerProperties">
<map>
<!-- properties here -->
</map>
</property>
<property name="classesToBeBound">
<list>
<value>com.example.Message1</value>
<value>com.example.Message2</value>
</list>
</property>
</bean>
1 ответ
Решение
"Может ли Spring проверить входящий XML по схеме?"
Если вы установите schema
имущество:
public class Jaxb2Marshaller ... {
/**
* Set the schema resource to use for validation.
*/
public void setSchema(Resource schemaResource) {
this.schemaResources = new Resource[] {schemaResource};
}
/**
* Set the schema resources to use for validation.
*/
public void setSchemas(Resource... schemaResources) {
this.schemaResources = schemaResources;
}
}
Jaxb2Marshaller
будет использовать эти схемы для проверки. Таким образом, в вашем контексте XML, вы можете просто сделать что-то вроде
<bean id="jaxb2Marshaller"
class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="schema" value="classpath:myschema.xsd"/>
<property name="classesToBeBound">
<list>
<value>com.example.Message1</value>
<value>com.example.Message2</value>
</list>
</property>
</bean>