在下面的场景中,我有一个选择一个对象的编组器&验证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>
标签,但它对我没用。
答案 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。 我知道这是一个老帖子,但我一段时间后一直在寻找答案,偶然发现了这篇文章。谷歌搜索后我找到了答案然后尝试了,所以认为这可能有助于寻找答案的人。