我正在反序列化一些XML,我希望能够轻松处理稍微不同版本的格式。我是这个XML的消费者,我无法控制格式以使我的工作更轻松。 XML的一个版本包含如下元素:
<food>
<entry name="thing1">
<member>apple</member>
</entry>
<entry name="thing2">
<member>orange</member>
</entry>
</food>
我有一个这样的带注释的类来解析它:
@Root(strict=false) public static class Food {
@Attribute public String name;
@ElementList(entry="member", inline=true) public List<String> members;
}
到目前为止一切顺利。今天,我发现这个XML的制作者也可以给我这个代表相同的信息:
<food>
<name>fruits</name>
<entry name="thing1">
<baz>
<member>apple</member>
</baz>
</entry>
<entry name="thing2">
<baz>
<member>orange</member>
</baz>
</entry>
</food>
该元素现在位于条目和成员之间。如果可能的话,我想要一个可以处理这两种格式的单个带注释的Food类。这些感觉就像SimpleFramework可以轻松处理的那样,但通过文档搜索并没有帮助我。我希望有人知道答案。
如果我必须知道我可以用另一种方式检测这个新模式,然后切换到一组完全不同的注释类,但差异很小,我试图避免这种情况。