1

在 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;
...
}

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

我尝试使用命名空间/前缀属性,但结果始终相同 - Guid 属性中的 NULL 值。

有任何想法吗?

4

1 回答 1

0

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

a) 写成 <a:guid/>

b) 写成 <a:guid></a:guid> 行

c)在您完成解析后,某些东西将其设置为空。

尝试使用构造函数注入并将值设置为最终值,然后您就知道在创建对象后将其设置为 null。

于 2012-11-15T10:21:09.553 回答