SimpleFramework可以反序列化沿途的任意深度吗?

时间:2014-02-06 18:22:20

标签: java xml-parsing simple-framework

我正在反序列化一些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可以轻松处理的那样,但通过文档搜索并没有帮助我。我希望有人知道答案。

如果我必须知道我可以用另一种方式检测这个新模式,然后切换到一组完全不同的注释类,但差异很小,我试图避免这种情况。

1 个答案:

答案 0 :(得分:0)

是否可以在课程设置required = false中添加可能的元素?

顺便说一下。总有一个后备解决方案:实施ConverterExample)。