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

YXD*_*YXD 20 python xml elementtree

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

我正在使用ElementTree来解析数据,然后我想以递归方式搜索一个元素.

根据这个问题,我只能递归搜索result.findall()if result是类型ElementTree而不是类型Element.

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

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

jco*_*ado 28

当你使用ElementTree.fromstring()你所获得的东西时,它基本上就是树的根,所以如果你创建一个这样的新树,ElementTree.ElementTree(root)你就会得到你正在寻找的.

所以,为了更清楚:

from xml.etree import ElementTree
tree = ElementTree.ElementTree(ElementTree.fromstring(<your_xml_string>))
Run Code Online (Sandbox Code Playgroud)

要么:

from xml.etree.ElementTree import fromstring, ElementTree
tree = ElementTree(fromstring(<your_xml_string>))
Run Code Online (Sandbox Code Playgroud)


ekh*_*oro 7

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

from xml.etree import ElementTree
from cStringIO import StringIO

tree = ElementTree.parse(StringIO(string))
Run Code Online (Sandbox Code Playgroud)