在春季

时间:2016-07-20 06:00:18

标签: java xml spring spring-integration

在下面的场景中,我有一个选择一个对象的编组器&验证xsd。我需要将这个Request对象映射到一个marshaller中的多个xsds。

  <bean id="jaxbMarshallerForCOTRequestObject" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
        <property name="classesToBeBound">
            <list>
                <value>com.fidintl.retail.myProject.model.th.Request</value>
            </list>
        </property>
       <property name="schema" value="classpath:internal/test1.xsd"></property>
       <property name="validationEventHandler" ref="ceFeedXmlValidationEventHandlerService"></property>
        <property name="marshallerProperties">
            <map>
                <entry key="jaxb.encoding">
                    <value>ISO-8859-1</value>
                </entry>
            </map>
        </property>
    </bean>

有人可以提供吗? 我尝试使用<schemas>标签,但它对我没用。

1 个答案:

答案 0 :(得分:0)

我使用Jaxb2Marshaller的方法setSchemas在java而不是xml中完成了它,它对我来说很好。

Jaxb2Marshaller jaxb2Marshaller = new Jaxb2Marshaller();
jaxb2Marshaller.setPackagesToScan(""); //mention packages here
ClassPathResource xsdONE = new ClassPathResource(""); //path to first xsd
ClassPathResource xsdTWO = new ClassPathResource(""); //path to second xsd
jaxb2Marshaller.setSchemaLanguage(XMLConstants.W3C_XML_SCHEMA_NS_URI);
jaxb2Marshaller.setSchemas(xsdONE, xsdTWO);
jaxb2Marshaller.afterPropertiesSet();

P.S。 我知道这是一个老帖子,但我一段时间后一直在寻找答案,偶然发现了这篇文章。谷歌搜索后我找到了答案然后尝试了,所以认为这可能有助于寻找答案的人。