文字列ソースからのPython xml ElementTree?


117

ElementTree.parseはファイルから読み取りますが、すでに文字列にXMLデータがある場合、これをどのように使用できますか?

ここに何か足りないかもしれませんが、文字列をファイルに書き込んで再度読み取らずにElementTreeを使用する方法が必要です。

xml.etree.elementtree


2
こんにちはジョージ2番目の答え(dgassaway)を正しいものとして受け入れることができればすばらしいと思います。
famargar

回答:


89

あなたが使用している場合はxml.etree.ElementTree.parse、ファイルから解析するために、あなたが使用することができxml.etree.ElementTree.fromstring、テキストから解析します。

xml.etree.ElementTreeを参照してください


38
問題はElementTree.fromstringがElementTreeではなく要素を生成することです!誰もがこれを回避する方法を知っていますか?
Samuel Lampa

4
@SamuelLampaが言及したのと同じ問題。私はElementTreeではありません、getroot()これを行うことはできません
Siddharth Menon 2013

23
@SamuelLampaはdgassawayの回答を参照してください。使用ET.ElementTree(ET.fromstring(xmlstring))
Colin Pickard

6
正しい答えについては、@ dgassawayによって提供されるものを参照してください
2.718 '26

インポートステートメントを忘れないでください
Stevoisiak 2017年

225

Elementを作成する文字列としてテキストを解析し、そのElementを使用してElementTreeを作成できます。

import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))

私はこの問題に遭遇したばかりであり、ドキュメントは完成していますが、parse()fromstring()メソッドの使用法の違いについて非常に簡単ではありません。


5
2行目は単純にできますroot = ET.fromstring(xmlstring)。等号ET.parse('file.xml').getroot()docs.python.org/3.6/library/...
アントンタラセンコ

3
@Antonは、OPが述べているように、ElementではなくElementTreeを生成するという考えです。これは、たとえばElementTree.write()を使用する場合に便利です。
バットブラット

16

あなたは必要です xml.etree.ElementTree.fromstring(text)

from xml.etree.ElementTree import XML, fromstring
myxml = fromstring(text)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.