SimpleXML:任何元素匹配

时间:2014-10-14 13:11:17

标签: java xml simple-framework

我需要解析一个可能有多种格式的XML元素,具体取决于用户需求。此格式在XSD中实现为“任何”元素。

我发现使用@XmlAnyElement注释 JAXB 可以做到这一点:

@XmlAnyElement
protected List<Element> any;

但我想知道如何使用 Simple Xml framework 。可能吗 ?我需要混合使用JAXB和SimpleXml吗?

以下是关于简单支持的相同问题:http://ehc.ac/p/simple/mailman/message/33015962/

1 个答案:

答案 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匹配的模型,但联合可以帮助减少输入到您的业务/软件域的异构数据。