Python ElementTree:解析字符串并获取 ElementTree 实例
我有一个包含XML数据的字符串,这个数据是通过http请求得到的。
我正在使用ElementTree来解析这些数据,然后我想递归地搜索某个元素。
根据这个问题,我只能在result
是ElementTree
类型时,使用result.findall()
进行递归搜索,而如果result
是Element
类型,就不行。
现在,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>))