我有一个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