使用org.springframework.oxm.jaxb.Jaxb2Marshaller对xsd进行Xml验证

时间:2015-12-17 18:24:11

标签: java xml spring xsd jaxb

我正在尝试使用Jaxb2Marshaller对xsd验证xml。但我经常遇到异常

org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element ""

我尝试了在论坛中提出的方法,但仍然无法正常工作。当我尝试使用简单的xml和xsd时,它可以工作。但是当我的项目特定的xml和xsd无法工作时。

是xsd的问题还是我加载模式的方式错了?

<bean id="reader" class="com.test.batch.CustomizedStaxEventItemReader"
    scope="step">
    <property name="fragmentRootElementName" value="person" />
    <property name="resource" value="file:#{jobParameters['INFILE']}" />
    <property name="unmarshaller" ref="personUnmarshaller"/>
</bean>
<bean id="personUnmarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
    <property name="classesToBeBound">
            <list>
                <value>com.test.batch.Person</value>        
            </list>
    </property>
     <property name="schemas">
        <list>
            <value>classpath:xsd/person.xsd</value>
        </list>
    </property> 
    <property name="validationEventHandler" ref="eventHandler"/> 
</bean>

请建议。

1 个答案:

答案 0 :(得分:0)

这是我针对xsd验证我的xml所做的:

How to validate against schema in JAXB 2.0 without marshalling?