如何根据xml元素的值通过java中的xsd验证xml

时间:2013-04-30 09:25:32

标签: java xml spring jaxb

我正在使用Jaxb2Marshaller并使用ValidationEventHandler-handleEvent()。我正在存储过程中发生的任何错误消息在地图中。我正在使用xsd来验证强制/可选标签。所以问题取决于xml中标记的值,其他一些标记值可以变为强制/可选。

现在,对于所有情况,我都制作了单独的xsd,试图检查各自的必填字段。但是我怎么能告诉jaxb要验证xml应该使用哪个xsd?

<bean id="jaxb2MarshallerForABC" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="contextPath">
            <util:constant
                static-field="com.abc.pqr.util.ABCMessageConstants.PACKAGE_DATAMODEL_AB_IN_OB" />
        </property>
        <property name="schemas">
            <value>
                classpath:xsd/tc/oa/in/InboundMessageIss.xsd <!--Depending on xml value validate with different xsd/since there could be diffent tag as mandatory/optional -->
            </value>
        </property>
        <property name="unmarshallerListener" ref="unMarshallingListenerForOA"/>
        <property name="validationEventHandler" ref="validationEventHandler" />
    </bean>

1 个答案:

答案 0 :(得分:0)

也许是这样的?:

<bean id="contractUnmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
        <list>
            <value>Class1</value>
            <value>Class2</value>
        </list>
    </property>
    <property name="schemas">
        <list>
            <value>Class1Schema</value>
            <value>Class2Schema</value>
        </list>
    </property>
</bean>