Android SimpleFramework命名空间前缀

时间:2012-11-13 09:40:21

标签: android namespaces xml-parsing simple-framework

Android上的

我正在使用SimpleFramework来解析传入的XML并创建适当的对象(之后保存到DB中......)

XML的一部分如下所示:

<CheckId xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">  
   <a:guid>00300001-0000-0000-0000-000000000000</a:guid>
</CheckId>

<a:guid>可以重复1..N

我的元素注释看起来像这样:

@ElementList(required = false, name="CheckId")  
@Namespace(reference="http://schemas.microsoft.com/2003/10/Serialization/Arrays")
@ForeignCollectionField(eager = true, orderColumnName = "Guid", columnName = TABLE_CHECK_ID_LIST_COLUMN)
public Collection<TableCheck> TableCheckIdList;

并且在TableCheck类中是:

@Root(name = "CheckId")
@Order(elements = { "guid" })   
public static class TableCheck implements XMLParseable {

@Element(required = false, name="guid")
@DatabaseField
public String Guid;
...
}

解析完成后,Collection包含与XML中出现的标记<a:guid>一样多的项目。但是,属性Guid始终为NULL。

我尝试使用Namespace / Prefix属性,但结果始终相同 - Guid属性中的NULL值。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这与@Namespace注释无关。由于以下原因之一,Guid为空。

a)它写成&lt; a:guid /&gt;

b)写成行&lt; a:guid&gt;&lt; / a:guid&gt;

c)完成解析后,有些事情将它设置为null。

尝试使用构造函数注入并将值设置为final,然后您知道在创建对象后没有其他任何设置为null。