Spring JAXB2解组重复的xml根元素名称

时间:2014-01-20 07:18:09

标签: java xml spring jaxb2

我有一个问题,即使用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”)但是字段完全不同。 当我只有一个对象定义时,每个对象都正确地解组,但是当我添加多个对象时,它会继续假设最后一个,我猜是一些最重要的问题。

任何人都知道如何解决这个问题?

编辑:解决方案我创建了一个包含所有字段的较大对象,这解决了问题。不是最好的解决方案,但效果很好。

1 个答案:

答案 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")

使用命名空间,编组程序可以区分不同的对象。