【问题标题】:Can SimpleFramework deserialize skipping arbitrary depths along the way?SimpleFramework 可以反序列化跳过任意深度吗?
【发布时间】:2014-02-06 18:22:19
【问题描述】:

我正在反序列化一些 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>

该元素现在位于 entrymember 之间。如果可能的话,我想要一个可以处理两种格式的带注释的 Food 类。这些感觉就像 SimpleFramework 可以轻松处理的东西,但是通过文档搜索并没有帮助我。我希望这里有人知道答案。

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

【问题讨论】:

    标签: java xml-parsing simple-framework


    【解决方案1】:

    将可能的元素添加到您的班级设置required = false 是否有效?

    顺便说一句。总有一个备用解决方案:实现Converter (Example)。

    【讨论】:

    • 除非我误解了“required=false”,否则我看不出它有什么帮助。我想在 Food POJO 中得到一个“成员”成员,我希望它解析 元素是 的直接子元素还是 的子元素 的子级。我去看看转换器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 2011-10-13
    • 2018-06-21
    • 2021-07-25
    • 1970-01-01
    • 2011-12-30
    相关资源
    最近更新 更多