Разбор XML в Python

Я хотел бы проанализировать простой, маленький XML файл с использованием python, однако работа над pyXML, похоже, прекратилась. Я бы хотел использовать python 2.6, если это возможно. Может ли кто-нибудь порекомендовать парсер XML, который будет работать с 2.6?

Спасибо

Ответ 1

Если он маленький и простой, просто используйте стандартную библиотеку:

from xml.dom.minidom import parse
doc = parse("filename.xml")

Это вернет дерево DOM, реализующее стандартный API-интерфейс объектной модели.

Если позже вам понадобится выполнить сложные действия, такие как проверка схемы или запрос XPath, я рекомендую сторонний lxml module, который является оберткой вокруг популярной библиотеки libxml2 C.

Ответ 2

Для большинства моих задач я использовал Minomom Lightweight DOM, начиная с официальной страницы:

from xml.dom.minidom import parse, parseString

dom1 = parse('c:\\temp\\mydata.xml') # parse an XML file by name

datasource = open('c:\\temp\\mydata.xml')
dom2 = parse(datasource)   # parse an open file

dom3 = parseString('<myxml>Some data<empty/> some more data</myxml>')

Ответ 4

Будет ли lxml соответствовать вашим потребностям? Его первый инструмент, к которому я обращаюсь для разбора xml.

Ответ 5

Несколько лет назад я написал библиотеку для работы со структурированным XML. Это упрощает XML, делая некоторые предельные допущения.

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

Но если вы используете XML для чего-то вроде файла конфигурации, моя библиотека довольно удобна. Вы определяете классы, которые описывают структуру XML, которую вы хотите, и как только у вас есть классы, существует метод для разметки в XML и его анализа. Фактический синтаксический анализ выполняется с помощью xml.dom.minidom, но затем моя библиотека извлекает данные и помещает их в классы.

Лучшая часть: вы можете объявить тип "Коллекция", который будет списком Python с нулевым или большим количеством других элементов XML внутри него. Это отлично подходит для таких вещей, как Atom или RSS-каналы (это была оригинальная причина, по которой я создал библиотеку).

Здесь URL: http://home.avvanta.com/~steveha/xe.html

Я был бы рад ответить на вопросы, если у вас есть.