java - 配置 Spring 4.1 O/X 映射以基于模式验证入站 XML?

标签 java spring jaxb xsd spring-oxm

Spring 4 O/X 在其抽象背后支持多个 XML 解码器。我们使用 JAXB2。

Spring 能否根据模式验证传入的 XML?我在官方documentation里面没查到什么也不在 spring-oxm schema描述配置的。这是我目前的配置,非常标准。

<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>

最佳答案

"Can Spring validate the incoming XML against a schema?"

如果设置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> 

关于java - 配置 Spring 4.1 O/X 映射以基于模式验证入站 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25897274/

相关文章:

java - 是否可以使用 BeanFactory 从不同的属性值创建集成流 bean?

Java Spring Security 无法识别的角色

java - Spring Boot + Hibernate - 如何维护 @Transient 字段

xml - 如何指定 XmlAccessorType 用于 JAXB xjc 生成的类

java - JAXB 列表中的不同元素

Java String Scanner 输入不等待信息,直接移动到下一条语句。如何等待信息?

java - 无法在 xfce4 桌面上启动 Java 应用程序? - 去你的 lightdm

java - 坐标不对应

gradle - 带有gradle的Java 11:必须指定绝对路径,但必须为$ {tools.jar}

java - 用于解析java中记录行的通用解析器