我需要解析一个可能有多种格式的XML元素,具体取决于用户需求。此格式在XSD中实现为“任何”元素。
我发现使用@XmlAnyElement
注释 JAXB 可以做到这一点:
@XmlAnyElement
protected List<Element> any;
但我想知道如何使用 Simple Xml framework 。可能吗 ?我需要混合使用JAXB和SimpleXml吗?
以下是关于简单支持的相同问题:http://ehc.ac/p/simple/mailman/message/33015962/
答案 0 :(得分:2)
SimpleXml具有完全针对此用例的Element*Union
功能。看看下面的内容,它将接口Result
的列表映射到Result1或Result2实现:
@Root(name = "response", strict = false)
public class Response {
@ElementListUnion({
@ElementList(inline = true, type = Result1.class, required=false),
@ElementList(inline = true, type = Result2.class, required=false)
})
private @Nullable List<Result> resultList;
...
SimpleXml尝试并绑定一个或另一个实现,这就是为什么建议为getter设置一个公共接口的原因。当然,您仍然需要以某种方式编写与输入中的xml匹配的模型,但联合可以帮助减少输入到您的业务/软件域的异构数据。