Httpリクエストから返されるXMLデータを含む文字列があります。
ElementTree を使用してデータを解析しているので、要素を再帰的に検索したいと思います。
この質問 によると、result
がElementTree
型ではなくElement
型である場合にのみ、result.findall()
で再帰的に検索できます。 。
文字列の解析に使用されるxml.etree.ElementTree.fromstring()
は、Element
オブジェクトを返し、ファイルの解析に使用されるxml.etree.ElementTree.parse()
は、ElementTree
オブジェクトを返します。
私の質問は次のとおりです:文字列を解析してElementTree
インスタンスを取得するにはどうすればよいですか?(一時ファイルへの書き込みのような狂気なしで) )
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>))
文字列をファイルのようなオブジェクトに変換し、ElementTree.parse
を使用します。
from xml.etree import ElementTree
from cStringIO import StringIO
tree = ElementTree.parse(StringIO(string))