Экспорт данных в виде XML-файла в Google Appengine - PullRequest
1 голос
/ 24 февраля 2011

Я пытаюсь экспортировать данные в файл XML в приложении Google, я использую Python / Django.Ожидается, что файл будет содержать до 100 тыс. Записей, преобразованных в XML.Есть ли в App Engine эквивалент:

f = file('blah', 'w+')
f.write('whatever')
f.close()

?

Спасибо

Редактировать Я пытаюсь достичь экспорта некоторой информациив XML-документ, так что он может быть экспортирован в Google местах (не знаю точно, как это будет работать, но мне сказали, что Google будет время от времени затрагивать этот XML-файл).

Ответы [ 3 ]

1 голос
/ 24 февраля 2011

Вы также можете генерировать XML с помощью шаблонов Django. Нет особой причины, по которой шаблон должен содержать HMTL. Я использую этот подход для создания канала Atom для моего блога. Шаблон выглядит следующим образом. Я передаю ему коллекцию сообщений, которые попадают в канал, и у каждого объекта Post есть метод to_atom, который генерирует его представление Atom.

<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"
      xml:lang="en"
      xml:base="http://www.example.org">
  <id>urn:uuid:4FC292A4-C69C-4126-A9E5-4C65B6566E05</id>
  <title>Adam Crossland's Blog</title>
  <subtitle>opinions and rants on software and...things</subtitle>
  <updated>{{ updated }}</updated>
  <author>
    <name>Adam Crossland</name>
    <email>adam@adamcrossland.net</email>
  </author>
  <link href="http://blog.adamcrossland.net/" />
  <link rel="self" href="http://blog.adamcrossland.net/home/feed" />
  {% for each_post in posts %}{{ each_post.to_atom|safe }}
  {% endfor %}
</feed>
0 голосов
/ 28 февраля 2011

Автор говорит, вероятно, Sitemaps .

Файлы Sitemap - это простой способ для веб-мастеров информировать поисковые системы о страницах на своих сайтах, доступных для сканирования. В своей простейшей форме файл Sitemap представляет собой файл XML, в котором перечислены URL-адреса сайта вместе с дополнительными метаданными о каждом URL-адресе (когда он последний раз обновлялся, как часто он меняется и насколько он важен по сравнению с другими URL-адресами на сайте). ) чтобы поисковые системы могли более разумно сканировать сайт.

И я думаю, что вам нужно написать XML для запроса объекта следующим образом:

doc.writexml(self.response.out)

В моем случае я делаю это на основе типов MIME, отправленных с клиента:

_MIME_TYPES = {
    # xml mime type needs lower priority, that's needed for WebKit based browsers,
    # which add application/xml equally to text/html in accept header
    'xml':  ('application/xml;q=0.9', 'text/xml;q=0.9', 'application/x-xml;q=0.9',),
    'html': ('text/html',),
    'json': ('application/json',), 
}

mime = self.request.accept.best_match(reduce(lambda x, y: x + y, _MIME_TYPES.values()))
if mime:
    for shortmime, mimes in _MIME_TYPES.items():
        if mime in mimes:
            renderer = shortmime
            break
# call specific render function
renderer = 'render' + renderer
logging.info('Using %s for serving response' % renderer)
try:
    getattr(self.__class__, renderer)(self)
except AttributeError, e:
    logging.error("Missing renderer %s" % renderer)
0 голосов
/ 24 февраля 2011

Каждый класс модели хранилища данных имеет метод экземпляра to_xml(), который сгенерирует XML-представление этого типа хранилища данных.

  1. Запустите запрос, чтобы получить нужные записи.
  2. Установите соответствующий тип содержимого ответа - если вы хотите предложить пользователю сохранить файл локально, добавьте content-disposition также заголовок
  3. генерирует любую преамбулу XML, которая вам нужна, прежде чем данные вашей записи
  4. выполняют итерацию по результатам запроса, вызывая to_xml() для каждого и добавляявывод на ваш ответ
  5. делать любое закрытие преамбулы XML, которое вам нужно сделать.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...