使用JAXB处理具有不同名称但结构相似的XML元素

时间:2013-11-01 14:16:47

标签: jaxb jaxb2

我有一个XML文件,其元素具有不同的名称但结构相似(相同的属性和子元素)。我想将XML文件转换为Java对象。我使用了@XmlAnyElement注释,它给出了元素,但它不能转换为Java对象类。通过eclipse调试,我已经验证它是以ElementNSImpl的形式,不能转换为Object类。

示例XML结构如下,

<element1 attr1="" attr2="" attr3="">
    <childElement1>
    <childElement2>
</element1>
<element2 attr1="" attr2="" attr3="">
    <childElement1>
    <childElement2>
</element2>

我正在使用JAXB注释。

1 个答案:

答案 0 :(得分:0)

Root

在JAXB中,Java类对应于XML Schema中的复杂类型。如果element1element2具有相同的类型,则它们会引用同一个类。

import javax.xml.bind.annotation.*;

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Root {

    private Element element1;

    private Element element2;

}

<强>元素

import javax.xml.bind.annotation.*;

@XmlAccessorType(XmlAccessType.FIELD)
public class Element {

    @XmlAttribute
    private String attr1;

    @XmlAttribute
    private String attr2;

    @XmlAttribute
    private String attr3;

    private String childElement1;

    private String childElement2;

}