appengine bulkdownloader для xml с вложенными сущностями - PullRequest
3 голосов
/ 20 ноября 2010

У меня есть приложение appengine с двумя простыми видами сущностей - ParentEntity s и ChildEntity s.Каждый ParentEntity имеет List принадлежащих ChildEntity s.

@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

Iпоявляется следующая ошибка:

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

Youможно увидеть вывод I ХОЧУ в http://rileylark.appspot.com/view

Загрузите проект eclipse, чтобы увидеть, как он работает.

То, что я хочу за свои 500 очков, - это рабочая конфигурацияФайл yaml, который может экспортировать данные для Parent и ChildEntities во вложенный XML с помощью appcfg.py download_data

1 Ответ

0 голосов
/ 23 ноября 2010

Попробуйте использовать:

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