Структура данных xml to Python с использованием lxml - PullRequest
2 голосов
/ 01 мая 2010

Как я могу преобразовать xml в структуру данных Python, используя lxml?

Я искал все выше и ниже, но ничего не нашел.

Пример ввода

<ApplicationPack>
  <name>Mozilla Firefox</name>
  <shortname>firefox</shortname>
  <description>Leading Open Source internet browser.</description>
  <version>3.6.3-1</version>
  <license name="Firefox EULA">http://www.mozilla.com/en-US/legal/eula/firefox-en.html</license>
  <ms-license>False</ms-license>
  <vendor>Mozilla Foundation</vendor>
  <homepage>http://www.mozilla.org/firefox</homepage>
  <icon>resources/firefox.png</icon>
  <download>http://download.mozilla.org/?product=firefox-3.6.3&amp;os=win&amp;lang=en-GB</download>
  <crack required="0"/>
  <install>scripts/install.sh</install>
  <postinstall name="Clean Up"></postinstall>
  <run>C:\\Program Files\\Mozilla Firefox\\firefox.exe</run>
  <uninstall>c:\\Program Files\\Mozilla Firefox\\uninstall\\helper.exe /S</uninstall>
  <requires name="autohotkey" />
</ApplicationPack>

Ответы [ 2 ]

5 голосов
/ 01 мая 2010
>>> from lxml import etree
>>> treetop = etree.fromstring(anxmlstring)

преобразует xml в строке в структуру данных Python, как и

>>> othertree = etree.parse(somexmlurl)

где somexmlurl - это путь к локальному XML-файлу или URL-адресу XML-файла в Интернете.

Структура данных Python, которую предоставляют эти функции (известная как «дерево элементов», откуда имя модуля etree), хорошо документирована здесь - все классы, функции, методы и т. Д., Которые рассматриваемая структура данных Python. Кстати, он близко соответствует тому, который поддерживается в стандартной библиотеке Python.

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

0 голосов
/ 01 мая 2010

Не совсем понятно, какую структуру данных вы ищете, но вот ссылка на пример кода для преобразования XML в python словарь списков через lxml.etree.

...