web-dev-qa-db-ja.com

Python ElementTree:文字列を解析してElementTreeインスタンスを取得する

Httpリクエストから返されるXMLデータを含む文字列があります。

ElementTree を使用してデータを解析しているので、要素を再帰的に検索したいと思います。

この質問 によると、resultElementTree型ではなくElement型である場合にのみ、result.findall()で再帰的に検索できます。 。

文字列の解析に使用されるxml.etree.ElementTree.fromstring()は、Elementオブジェクトを返し、ファイルの解析に使用されるxml.etree.ElementTree.parse()ElementTreeオブジェクトを返します。

私の質問は次のとおりです:文字列を解析してElementTreeインスタンスを取得するにはどうすればよいですか?(一時ファイルへの書き込みのような狂気なしで) )

20
YXD

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

文字列をファイルのようなオブジェクトに変換し、ElementTree.parseを使用します。

from xml.etree import ElementTree
from cStringIO import StringIO

tree = ElementTree.parse(StringIO(string))
6
ekhumoro