我正在使用 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 和两个子类A 和B
是否可以反序列化此 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/