java - 简单 XML 框架的继承

标签 java android xml inheritance simple-framework

我正在使用 Simple XML Framework用于解析 XML 文件。

我从服务器收到一个如下所示的 XML 文件:

<Objects>
   <Object type="A">
      <name></name>
      <color></color>
   </Object>
   <Object type="B">
      <shape></shape>
      <weight></weight>
   </Object>
<Objects>

我有一个接口(interface)(或父类(super class))Object 和两个子类AB

是否可以反序列化此 XML 文档?

我在 Tutorial 中看到可以用 class 属性来区分子类,但不幸的是,这对我来说是不可能的。有没有办法让框架根据类型属性选择正确的子类?

我不能使用其他框架(如 JAXB),因为我使用的是 Android..

最佳答案

如果您愿意对 XML 做一点小改动,简单的 XML 也可以做到这一点。因此,在您的示例中,您可以将该 xml 更改为如下所示:

<Objects>
   <A>
      <name></name>
      <color></color>
   </A>
   <B>
      <shape></shape>
      <weight></weight>
   </B>
<Objects>

然后你可以有以下java:

@ElementListUnion({
    @ElementList(entry = "A", inline = true, type = A.class),
    @ElementList(entry = "B", inline = true, type = B.class)
}
private List<BaseClass> objects;

这就是它真正的全部。虽然我不认为它可以基于属性来完成。不过我可能是错的,你可能想要 read the docs对于那个。

关于java - 简单 XML 框架的继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846904/

相关文章:

java - 创建装饰器,如何获取eclipse插件中的文件信息?

发出 Web 请求的 Android 服务线程正在阻塞 UI

android - Gmail 5.0 应用程序在收到 ACTION_SEND Intent 时失败并显示 "Permission denied for the attachment"

android - ScrollView 中带有 LinearLayout 的大量不需要的空白

java - 从文本文件获取名称会将名称向左移动 1 位(在数组中)

java - java应用程序中无法包含vlc库

java - 解决 XSSFWorkbook - Java - POI .jar 的问题

xml - 您如何使用 PowerShell 的 . (点)符号遍历元素名称中带有句点的元素?

java - 如何使相对布局半透明但不使 Activity 半透明

java - 无法获取 xml 文件中名称为 ="debitRequest"的父节点的子节点名称