我想生成各种集合的集合。所有人都有一个共同的父母,每个父母都有一个@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
注释
我认为这可能是由于继承。
答案 0 :(得分:1)
如果你有一个共同的root,你可以使用@XmlElementRef:
如果没有共同的根,您可以使用@XmlAnyElement(lax = true):
答案 1 :(得分:0)
您应该定义架构并使用此架构生成JAXB类。使用这些类,您可以对XML进行转换。