我有一個appengine應用程序與兩種簡單的實體 - ParentEntity
s和ChildEntity
s。每個ParentEntity
擁有一個擁有ChildEntity
s。appengine bulkdownloader與嵌套實體的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你可以看到輸出我想要在http://rileylark.appspot.com/view
下載eclipse項目來查看它是如何工作的。
我想爲我的500點是可以爲母公司數據和ChildEntities導出到嵌套XML與appcfg.py download_data
爲什麼你使用transform.child_node_from_list('GradingPeriod') 而不是transform.list_from_child_node('GradingPeriod')在鏈接的例子中使用? – systempuntoout 2010-11-22 23:14:45
我在做一個預感,就是這樣。我在任何地方都沒有看到任何權威的文檔,其他一些網站使用child_node_from_list,而且好像我想從列表中創建一個子節點。我也嘗試了list_from_child_node,但也得到了一堆其他的錯誤。 – 2010-11-23 05:05:23
從中取出「children」的「list」似乎總是「None」。 – hleinone 2010-12-10 01:12:19