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>

1..N<a:guid>を繰り返すことができる場所

私の要素の注釈は次のようになります。

@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>、XML に表示されたタグと同じ数のアイテムが含まれます。ただし、プロパティ Guid は常に NULL です。

Namespace / Prefix 属性で遊んでみましたが、結果は常に同じです - Guid プロパティの NULL 値。

何か案は?

4

1 に答える 1

0

これは @Namespace アノテーションとは関係ありません。ここで、次のいずれかの理由により、Guid は null です。

a) <a:guid/> のように書く

b) 行 <a:guid></a:guid> と書かれています

c) 解析が終了した後、何かがそれを null に設定しています。

コンストラクター インジェクションを使用して、値を final に設定してみてください。オブジェクトが作成された後、値を null に設定していないことがわかります。

于 2012-11-15T10:21:09.553 に答える