使用集合集合生成XML

时间:2012-02-29 18:55:17

标签: java xml jaxb

我想生成各种集合的集合。所有人都有一个共同的父母,每个父母都有一个@XMLRootElement

@XmlRootElement("as")
public class As extends DTOs {
    @XmlElement("a")
    private Collection collection;
    //
}

@XmlRootElement("bs")
public class Bs extends DTOs {
    @XmlElement("b")
    private Collection collection;
    //
}

@XmlRootElement("b")
public class B extend DTO {
}

public class DTOs extends DTO {
}

public class Element Extend DTO{

    private Collection collection;

    @XmlElementRef
    getCollection() {
        return collection;
    }
}

Element创建的宣言应该是什么:

<as>
     <a>
         <name>
     </a>
     <bs>
         <b><foo/></b>
     <bs>
     <cs>
         <c/>
     </cs>
</as>

我的第一次尝试是@XmlAnyElement(lax=true),但由于“非法注释”,它是一个例外。我想这是由于与具体对象中的@XmlElement发生冲突。

添加@XmlElementRef时,它会在运行时使用

进行投诉
  

无法封送类型“com.example.Bs”作为元素,因为它缺少@XmlRootElement注释

我认为这可能是由于继承。

2 个答案:

答案 0 :(得分:1)

如果你有一个共同的root,你可以使用@XmlElementRef:

如果没有共同的根,您可以使用@XmlAnyElement(lax = true):

答案 1 :(得分:0)

您应该定义架构并使用此架构生成JAXB类。使用这些类,您可以对XML进行转换。