2

如何使用 lxml 将 xml 转换为 Python 数据结构?

我搜索了高低,但找不到任何东西。

输入示例

<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>
4

2 回答 2

5
>>> from lxml import etree
>>> treetop = etree.fromstring(anxmlstring)

将字符串中的 xml 转换为 Python 数据结构,也是如此

>>> othertree = etree.parse(somexmlurl)

wheresomexmlurl是本地 XML 文件的路径或 Web 上 XML 文件的 URL。

这些函数提供的 Python 数据结构(称为“元素树”,etree模块名称由此而来)在此处有详细记录——相关 Python 数据结构支持的所有类、函数、方法等。顺便说一句,它与 Python 标准库中支持的非常匹配。

如果你想要一些不同的Python 数据结构,你必须遍历 lxml 返回的 Python 数据结构,如上所述,并根据收集到的信息自己构建不同的数据结构;lxml 不能专门帮助您,除非提供几个帮助程序来在它返回的已解析结构中查找信息,因此收集所述信息是一项灵活、简单的任务(再次,请参见上面的文档 URL)。

于 2010-05-01T03:27:19.263 回答
0

目前尚不完全清楚您正在寻找什么样的数据结构,但这里有一个代码示例的链接,用于通过lxml.etree.

于 2010-05-01T08:20:42.330 回答