2010-11-20 6 views
3

2種類のエンティティ(ParentEntityChildEntity)を持つappengineアプリがあります。各ParentEntityには、が所有されています(ChildEntity)。ネストしたエンティティを持つappengineのバルクダウンローダーをxmlに変換する

@PersistenceCapable 
public class ParentEntity 
{ 
    @PrimaryKey 
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) 
    private Key key; 

    @Persistent 
    private String name; 

    @Persistent(defaultFetchGroup=true) 
    private List<ChildEntity> children; 

... 

同様にChildEntityが定義されています。

ここでは、http://bulkloadersample.appspot.com/に記載されている手法を使用して、データストアからすべてのデータをダウンロードします。これらの例では、親エンティティ内にネストされた所有エンティティを持つxmlファイルにデータをエクスポートできます。しかし、私が次の設定を使用しようとすると(これは非常によく似ています - http://bulkloadersample.appspot.com/showfile/bulkloader_visitactivity.yamlを参照して、activitiesのプロパティを見てください)、私はエラーが発生しました。

- kind: ParentEntity 
    connector: simplexml 
    connector_options: 
    xpath_to_nodes: /Parents/ParentEntity 
    style: element_centric 

    property_map: 
    - property: __key__ 
     external_name: key 
     export_transform: transform.key_id_or_name_as_string 

    - property: children 
     external_name: Children 
     import_transform: 
     transform.list_from_child_node('Children/ChildEntity') 
     export_transform: 
     transform.child_node_from_list('ChildEntity') 


- kind: ChildEntity 
    connector: simplexml 
    connector_options: 
    xpath_to_nodes: /Children/ChildEntity 
    style: element_centric 

    property_map: 
    - property: __key__ 
     external_name: key 
     export_transform: transform.key_id_or_name_as_string 

私は次のエラーを取得:

google.appengine.ext.bulkload.bulkloader_errors.ErrorOnTransform: Error on trans 
form. Property: children External Name: Children. Code: transform.ch 
ild_node_from_list('ChildEntity') Details: 'NoneType' object is not iterable 

ビッグ更新:あなたが見ることができますhttp://rileylark.appspot.com

私はあなたが実際に確認してダウンロードすることができます。このサンプルアプリケーションを作成しましたし、テスト

を出力I WANT at http://rileylark.appspot.com/view

eclipseプロジェクトをダウンロードして、その動作を確認してください。

私は私の500ポイントのために欲しいのはappcfg.py download_dataでネストされたXMLに親とChildEntitiesため

+0

である理由リンクされた例で使用されているtransform.child_node_from_list( 'GradingPeriod') ではなく、transform.list_from_child_node( 'GradingPeriod')を使用していますか? – systempuntoout

+0

私はそれがすべきことであることに気をつけてそれをやっています。私はどこからでも信頼できるドキュメントを見たことがなく、他のいくつかのサイトはchild_node_from_listを使用しています。リストから子ノードを作成したいようです。私もlist_from_child_nodeを試しましたが、他のエラーがたくさんあります。 –

+0

「子」をフェッチする「リスト」は常に「なし」と思われます。 – hleinone

答えて

0

をデータをエクスポートすることができます作業config.yamlファイルを使用してみてくださいされています

transform.list_from_child_node('GradingPeriods/GradingPeriod', suppress_blank=True) 
+0

エクスポートの変換は?私は 'google.appengine.ext.bulkload.bulkloader_errors.ErrorOnTransform:変換時にエラーが発生します。プロパティ:gradingPeriods外部名:GradingPeriods。コード:transform.list_from_child_node( 'GradingPeriods/GradingPeriod'、True)詳細: '__node __' '。 –

+0

'transform.list_from_child_node( 'GradingPeriods/GradingPeriod'、suppress_blank = True)' –

+0

いいえ、いいえ、インポート変換を試してください –

関連する問題