от
Я собираюсь построить кусок проекта, который нужно построить и разместить XML-документа в веб-службу, и я хотел бы сделать это в Python, в качестве средства, чтобы расширить свои навыки в нем. К сожалению, пока я знаю, что XML-модели достаточно хорошо .Чистая, я не знаю, какие плюсы и минусы моделей XML на Python. У кого есть опыт обработки XML на Python? Где бы вы посоветовали мне начать? XML-файлы, я буду дома будет довольно проста.

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.

13 Ответы

0 голосов
от
Я собираюсь построить кусок проекта, который нужно построить и разместить XML-документа в веб-службу, и я хотел бы сделать это в Python, в качестве средства, чтобы расширить свои навыки в нем. К сожалению, пока я знаю, что XML-модели достаточно хорошо .Чистая, я не знаю, какие плюсы и минусы моделей XML на Python. У кого есть опыт обработки XML на Python? Где бы вы посоветовали мне начать? XML-файлы, я буду дома будет довольно проста.
0 голосов
от
Лично я играл с несколькими встроенными опционами на XML-тяжелый проект и остановились на pulldom как лучший выбор для менее сложных документах. Особенно для маленьких Простые вещи, мне нравится событийная теория синтаксического анализа, а не настраивать кучу всяких обратных вызовов для относительно простой структурой. Вот хорошая быстрая дискуссия о том, как использовать API. Что мне нравится: вы можете обрабатывать парсинг в цикле
for
, а не с помощью обратных вызовов. Вы также задержку полного разбора ("тянуть") и только дополнительные детали, когда вы называете
expandNode()
. Это удовлетворяет мое общее требование для "ответственных" эффективность без ущерба для простоты использования и простоты.
0 голосов
от
ElementTree имеет хороший API для pythony. Я думаю, что это даже поставляется как в Python 2.5 Это в чистом Python, и как я уже сказал, довольно красиво, но если вам понадобился более высокую производительность, тогда как lxml выставляет один и тот же API и использует библиотеки libxml2 под капотом. Теоретически вы можете просто поменять его, когда вы обнаружите, что это нужно.
0 голосов
от
Существует 3 основных способа работы с XML, в общем: дом, Сакс, и XPath. Модель дом-это хорошо, если вы можете себе позволить, чтобы загрузить весь XML-файл в память сразу, и вы не возражаете дело со структурами данных, и вы ищете на много/большинство моделей. Модель саксофон это здорово, если вас интересуют только несколько тегов, и/или вы имеете дело с большими файлами и может обрабатывать их последовательно. Модель XPath-это немного каждого-вы можете выбрать пути к элементам данных, что вам нужно, но это требует несколько библиотек, чтобы использовать. Если вам нужен простой и упакованы с Python, минидом ваш ответ, но это довольно хромой, и документация "вот документы на дом, поди разберись". Это действительно раздражает. Лично мне нравится, главное, что это быстрее (в основе) реализации ElementTree, который представляет собой дом-как модель. Я использовал системы саксофон, и во многом они более "подходящие для Python" в их чувствую, но я обычно в конечном итоге создание государственных систем, чтобы справиться с ними, и это путь к безумию (и ошибок). Я говорю иди с минидом если вы любите исследования, или ElementTree, если вы хотите хороший код, который хорошо работает.
0 голосов
от
Я использовал ElementTree для нескольких проектов и рекомендовать его. Это подходящие для Python, происходит "в поле" с Python 2.5, включая версию c главное (в формате XML.etree.главное) что в 20 раз быстрее, чем на чистом Python версии, и очень проста в использовании. библиотека lxml имеет некоторые преимущества производительности, но они неровные, и вы должны проверить в первую очередь критериев для вашего случая. Как я понимаю, код ElementTree может быть легко портирован на lxml.
0 голосов
от
Это зависит от того, насколько сложный документ должен быть. Я использовал минидом много для написания XML, но это обычно просто читаю документы, делая некоторые простые преобразования и записи их обратно. Которая работала достаточно хорошо, пока мне не понадобилась возможность заказать атрибуты элемента (для удовлетворения древней приложения, что не правильно анализировать XML). В этот момент я сдался и написал XML-код себе. Если вы работаете только на простые документы, то делать это самостоятельно может быть быстрее и проще, чем изучать основы. Если вы могли бы написать XML-файл вручную, то вы, вероятно, может в нем код вручную, а также (только не забудьте правильно экранировать специальные символы, и использовать
str.encode(codec, errors="xmlcharrefreplace")
). Помимо этих непредвиденного, XML-это достаточно регулярно, что вы не нуждаетесь в специальной библиотеке, чтобы написать его. Если документ слишком сложен, чтобы писать от руки, то вам стоит заглянуть в один из уже упомянутых рамок. Не нужно писать общие записи XML-файлов.
0 голосов
от
Вы также можете попробовать распутать разобрать простой XML-документов.
0 голосов
от
Поскольку вы упомянули, что вы будете строить "достаточно простой" в формате XML, модуль минидом (входит в стандартную библиотеку Python), вероятно, удовлетворить ваши потребности. Если у вас есть опыт работы с представление DOM в XML, вы должны найти в API довольно прямо вперед.
0 голосов
от
Я пишу SOAP-сервер, который принимает запросы в формате XML и создает XML-ответы. (К сожалению, это не мой проект, так это с закрытым исходным кодом, но это уже другая проблема). Оказалось для меня, что создание (мыло) XML-документов достаточно прост, если у вас есть структура данных, которая "вписывается" в схему. Я держу конверт с конверт ответ (почти) такой же, как конверт запросу. Затем, так как моя структура данных (возможно, вложенных) словарь, я создаю строку, которая превращает этот словарь в
0 голосов
от
Для серьезной работы с XML в Python с помощью lxml использовать Питон поставляется с ElementTree встроенной библиотеки, но lxml расширяет его в плане скорости и функциональности (проверка схемы использования Sax, XPath, то различные виды итераторов и многие другие функции). Вы должны установить его, но во многих местах, это уже считается частью стандартного оборудования (например, Google AppEngine не позволяет на основе с пакетами Python, но делает исключение для библиотека lxml, pyyaml, и некоторые другие). Построения XML-документов с электронной фабрики (с помощью lxml) Ваш вопрос о построении XML-документа. С помощью lxml есть много способов и мне потребовалось некоторое время, чтобы найти один, который, кажется, чтобы быть простым в использовании и легко читается. Пример кода, с помощью lxml DOC на использование e-заводской (немного упрощенный): Е-завод обеспечивает простой и компактный синтаксис для генерации XML и HTML:
...