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

时间:2011-12-20 18:33:39

标签: python xml elementtree

我有一个包含从http请求返回的XML数据的字符串。

我使用ElementTree来解析数据,然后我想以递归方式搜索元素。

根据this question,如果result.findall()类型为result而不是ElementTree,我只能使用Element递归搜索。

现在xml.etree.ElementTree.fromstring()用于解析字符串,返回Element对象,而xml.etree.ElementTree.parse()用于解析文件,返回{{1}对象。

我的问题是:我如何解析字符串并获得ElementTree实例?(没有像写入临时文件那样疯狂)

2 个答案:

答案 0 :(得分:27)

当你使用ElementTree.fromstring()时,你得到的东西基本上就是树的根,所以如果你创建一个像ElementTree.ElementTree(root)这样的新树,你就会找到你。< / p>

所以,为了更清楚:

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

答案 1 :(得分:6)

将您的字符串转换为类文件对象并使用ElementTree.parse

from xml.etree import ElementTree
from cStringIO import StringIO

tree = ElementTree.parse(StringIO(string))