使用简单XML框架inheritance

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

从服务器我收到XML-File,如下所示:

          

我有一个接口(或超类) 对象和两个子类AB.

是否可以反序列化此XML-Document?

我在教程中看到有可能用 -attribute来区分子 ,但不幸的是,这对我来说是不可能的。 有没有办法选择框架在type属性的基础上选择正确的子类?

我不能使用另一个框架(如JAXB)因为我使用Android ..

如果您愿意对XML进行一次小的更改,那么简单的XML也可以这样做。 因此,在您的示例中,您可以将xml更改为如下所示:

           

然后你可以有以下java:

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

这就是它真正存在的一切。 虽然我不认为它可以基于属性完成。 我可能是错的,你可能想要阅读那个文档 。

如果您不能使用class属性,这将是棘手的,如下所示:

           

为什么在将type="A"使用正则表达式替换type="A"type="B"属性,然后将其提供给Simple XML反序列化器? 例如:

 xml = xml.replaceAll("type=\"([A-Za-z0-9_]+)\", "class=\"$1\""); 

我能够使用这个技巧解析由.NET的XML序列化程序生成的XML,它使用属性xsi:type来指示多态列表中的特定类类型,例如此类。