我有一个问题,即使用Spring3和Jaxb2将simalar xml(相同的根元素但不同的字段)解组到不同的对象
我使用spring来定义我的xml转换器,如下所示:
<bean id="xmlConverter" class="org.springframework.http.converter.xml.MarshallingHttpMessageConverter">
<property name="marshaller" ref="jaxbMarshaller"></property>
<property name="unmarshaller" ref="jaxbMarshaller"></property>
<property name="supportedMediaTypes" value="text/xml" />
</bean>
<bean id="jaxbMarshaller" class="org.springframework.oxm.jaxb.Jaxb2Marshaller">
<property name="classesToBeBound">
<list>
<value>com.my.project.Object1</value>
<value>com.my.project.Object2</value>
<value>com.my.project.Object3</value>
</list>
</property>
所以问题归结为每个对象都有相同的@XmlRootElement(name =“xml”)但是字段完全不同。 当我只有一个对象定义时,每个对象都正确地解组,但是当我添加多个对象时,它会继续假设最后一个,我猜是一些最重要的问题。
任何人都知道如何解决这个问题?
编辑:解决方案我创建了一个包含所有字段的较大对象,这解决了问题。不是最好的解决方案,但效果很好。
答案 0 :(得分:1)
为每个对象使用不同的命名空间。例如:
@XmlRootElement(name = "xml", namespace="com.my.project.obj1")
@XmlRootElement(name = "xml", namespace="com.my.project.obj2")
@XmlRootElement(name = "xml", namespace="com.my.project.obj3")
使用命名空间,编组程序可以区分不同的对象。