Python ElementTree:解析字符串并获取 ElementTree 实例

22 投票
2 回答
21266 浏览
提问于 2025-04-17 08:43

我有一个包含XML数据的字符串,这个数据是通过http请求得到的。

我正在使用ElementTree来解析这些数据,然后我想递归地搜索某个元素。

根据这个问题,我只能在resultElementTree类型时,使用result.findall()进行递归搜索,而如果resultElement类型,就不行。

现在,xml.etree.ElementTree.fromstring()这个方法用来解析字符串时,会返回一个Element对象,而xml.etree.ElementTree.parse()这个方法用来解析一个文件时,会返回一个ElementTree对象。

我的问题是:我该如何解析这个字符串并得到一个ElementTree实例呢?(不想搞什么临时文件之类的麻烦)

2 个回答

8

把你的字符串变成一个像文件一样的对象,然后使用 ElementTree.parse 来处理它:

from xml.etree import ElementTree
from cStringIO import StringIO

tree = ElementTree.parse(StringIO(string))
32

当你使用 ElementTree.fromstring() 的时候,实际上你得到的是树的根节点。所以如果你像这样创建一个新的树 ElementTree.ElementTree(root),你就能得到你想要的东西。

为了让这个更清楚:

from xml.etree import ElementTree
tree = ElementTree.ElementTree(ElementTree.fromstring(<your_xml_string>))

或者:

from xml.etree.ElementTree import fromstring, ElementTree
tree = ElementTree(fromstring(<your_xml_string>))

撰写回答