Python ElementTree:解析字符串并获取ElementTree实例
我有一个字符串,其中包含从http请求返回的XML数据 我正在使用解析数据,然后我想递归地搜索一个元素 根据,如果Python ElementTree:解析字符串并获取ElementTree实例,python,xml,elementtree,Python,Xml,Elementtree,我有一个字符串,其中包含从http请求返回的XML数据 我正在使用解析数据,然后我想递归地搜索一个元素 根据,如果result是ElementTree类型,而不是Element类型,我只能使用result.findall()递归搜索 现在,用于解析字符串的xml.etree.ElementTree.fromstring()返回一个元素对象,而用于解析文件的xml.etree.ElementTree.parse()返回一个ElementTree对象 我的问题是:如何解析字符串并获得ElementT
result
是ElementTree
类型,而不是Element
类型,我只能使用result.findall()
递归搜索
现在,用于解析字符串的xml.etree.ElementTree.fromstring()
返回一个元素
对象,而用于解析文件的xml.etree.ElementTree.parse()
返回一个ElementTree
对象
我的问题是:如何解析字符串并获得
ElementTree
实例?(没有像写入临时文件那样的疯狂)当您使用ElementTree.fromstring()
时,您得到的基本上是树的根,因此,如果您创建一个像这样的新树ElementTree.ElementTree(root)
,您将得到您想要的
因此,更清楚地说:
from xml.etree import ElementTree
tree = ElementTree.ElementTree(ElementTree.fromstring(<your_xml_string>))
从xml.etree导入元素树
tree=ElementTree.ElementTree(ElementTree.fromstring())
或:
from xml.etree.ElementTree导入fromstring,ElementTree
tree=ElementTree(fromstring())
将字符串转换为类似文件的对象,并使用ElementTree.parse
:
from xml.etree import ElementTree
from cStringIO import StringIO
tree = ElementTree.parse(StringIO(string))
我只想补充一点——对于那些使用lxml的人来说——在lxml中(元素总是属于文档/树,即使是隐式的),您可以使用getrootttree()方法。谢谢!etree中非常烦人的API设计,根据输入源有不同类型的输出。非常令人困惑:(这在文档中不是很清楚。“fromstring()将XML从字符串直接解析到元素中,该元素是解析树的根元素。其他解析函数可能会创建ElementTree。”太好了,这就是我要找的元素。:-)
from xml.etree import ElementTree
from cStringIO import StringIO
tree = ElementTree.parse(StringIO(string))