编组和解组具有相同名称的不同类(在xml中)

时间:2019-05-21 20:25:39

标签: java xml jaxb

使用JAXB或其他解决方案封送和解组两个具有相同名称的不同对象的最佳解决方案是什么。我从模式中获得了此类的一部分。我需要同时处理“ ext”的两个版本。

// JAXB类

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "ContentType", propOrder = {
        "ext",
        "ext2"
})

public class ContentType {

    @XmlElement(name = "Extensions", namespace = "urn_1")
    protected urn_1.ExtensionsType ext;

    @XmlElement(name = "Extensions", namespace = "urn_2")
    protected urn_2.DianExtensionsType ext2;

    @XmlAnyElement
    protected Element any;

    public Element getAny() {
        return any;
    }

    /**
     * Sets the value of the any property.
     * 
     * @param value
     *     allowed object is
     *     {@link Element }
     *     
     */
    public void setAny(Element value) {
        this.any = value;
    }

    public ExtensionsType getExt() {
    return ext;
    }

    public void setExt(ExtensionsType ext) {
    this.ext = ext;
    }
    public ExtensionsType getExt2() {
    return ext2;
    }

    public void setExt2(ExtensionsType ext2) {
    this.ext2 = ext2;
    }
}
package urn_1;

@XmlRegistry
public class ObjectFactory {

    private final static QName _Extensions_QNAME = new QName("urn_1", "Extensions");

@XmlElementDecl(namespace = "urn_1", name = "Extensions")
    public JAXBElement<ExtensionsType> createExtensions(ExtensionsType value) {
        return new JAXBElement<ExtensionsType>(_Extensions_QNAME, ExtensionsType.class, null, value);
    }

}
package urn_2;

@XmlRegistry
public class ObjectFactory {

    private final static QName _Extensions_QNAME = new QName("urn_2", "Extensions");

@XmlElementDecl(namespace = "urn_2", name = "Extensions")
    public JAXBElement<ExtensionsType> createExtensions(ExtensionsType value) {
        return new JAXBElement<ExtensionsType>(_Extensions_QNAME, ExtensionsType.class, null, value);
    }

}

我想要的是这样的:JAXB @XmlElements, different types but same name? 但就我而言,我的扩展类是两个不同的版本,它们不是另一个的扩展。

我尝试更改名称以设置“ ext”和“ ext2”两个版本之间的差异,但是我无法正确编组或解组xml文件,如果我将名称从'@XmlElement(name =“扩展名”)'。 另外,我一直在尝试使用“ any”元素,但是我不知道如何创建这种对象。

0 个答案:

没有答案