我正在使用Simple XML framework用于 Android 上的反序列化。
我需要反序列化的xml大致如下:
<?xml version="1.0" encoding="UTF-8"?>
<elements type="array">
<element foo="x"/>
<element foo="y"/>
</elements>
换句话来说,它是一个位于根级别的数组。
如何定义一个可以反序列化的模型类?
我尝试了如下操作:
@Root (name = "elements")
public class Elements implements Serializable {
private static final long serialVersionUID = ...
@ElementArray (name = "element")
private List<Element> elements;
}
但是它失败了,因为没有 type
字段来解释 xml 中的 type
属性。
添加 type
字段(只是为了满足反序列化器的要求)并不能解决问题,而是会生成另一个错误:org.simpleframework.xml.core.InstantiationException: Type不是字段“elements”的数组接口(interface) java.util.List ...
实现 Elements
类的正确方法是什么?尽管在时间压力下,我想要一个干净的解决方案,而不是一些黑客的解决方法(我可能会想出)。
最佳答案
在 Elements 类中,您应该使用 @ElementList
并添加名为“type”的属性
@ElementList(name="elements", inline=true)
private List<Element> elements;
@Attribute(name="type")
private String type;
另外,如果您不想关心 xml 中的 type
属性,只需添加 required=false
,如下所示:
@Attribute(name="type", required=false)
关于java - 如何使用简单 Xml 框架反序列化表示根级数组的 xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25388164/