使用JAXB解析不带容器标记的抽象对象
问题描述:
我想使用JAXB生成非常特定的XML模式,然后解析与模式匹配的XML文档。 我有一个AbstractViewElement类,它是将显示在XML中的所有内容的基础。 再就是布局类和窗口小部件:使用JAXB解析不带容器标记的抽象对象
public class Layout extends AbstractViewElement {
private List<AbstractViewElement> children;
...
}
public class TextField extends AbstractViewElement {
...
}
public class Button extends AbstractViewElement {
...
}
现在,我希望能够解析看起来或多或少像这样的XML文档:
<ucl:Layout>
<ucl:Button/>
<ucl:TextField/>
</ucl:Layout>
所以,基本上我想摆脱通常由Layout类所需的“children”标签。我不知道如何在JAXB中设置xml命名空间,所以...帮助?
答
您可以在children
属性上使用@XmlElementRef
注释。然后用@XmlRootElement
注释AbstractViewElement
的所有子类。
对于命名空间,你可以使用包级别@XmlSchema
注解。
你有一个XSD? – Xstian 2014-10-28 08:43:15