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

2 投票
2 回答
4525 浏览
提问于 2025-04-15 22:13

我该如何使用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>

2 个回答

0

你想要什么样的数据结构还不太清楚,不过这里有一个链接,可以让你看看怎么用 lxml.etreeXML 转换成 Python 的字典和列表 的代码示例。

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

这个功能可以把字符串中的XML转换成Python的数据结构,另外还有一个功能也能做到这一点。

>>> othertree = etree.parse(somexmlurl)

这里的 somexmlurl 是指本地XML文件的路径,或者是网上XML文件的链接。

这些功能提供的Python数据结构被称为“元素树”,这也是 etree 模块名字的来源。关于这个数据结构的详细信息可以在这里找到——里面有所有相关的类、函数、方法等等的说明。顺便提一下,这个结构和Python标准库中支持的结构非常相似。

如果你想要一种不同的Python数据结构,你需要自己去理解lxml返回的这个数据结构,然后根据收集到的信息来构建你想要的不同结构。lxml本身不能直接帮你,只能提供一些工具,帮助你在解析后的结构中找到信息,这样收集信息就变得灵活而简单了(再次提醒,可以查看上面的文档链接)。

撰写回答