Python xml ElementTree aus einer Stringquelle?


117

Die ElementTree.parse liest aus einer Datei. Wie kann ich diese verwenden, wenn ich die XML-Daten bereits in einer Zeichenfolge habe?

Vielleicht fehlt mir hier etwas, aber es muss eine Möglichkeit geben, den ElementTree zu verwenden, ohne die Zeichenfolge in eine Datei zu schreiben und erneut zu lesen.

xml.etree.elementtree


2
Hallo George, es wäre großartig, wenn du die zweite Antwort (dgassaway) als die richtige akzeptieren könntest.
Famargar

Antworten:


89

Wenn Sie xml.etree.ElementTree.parsezum Parsen aus einer Datei verwenden, können Sie xml.etree.ElementTree.fromstringzum Parsen aus Text verwenden.

Siehe xml.etree.ElementTree


38
Das Problem ist, dass ElementTree.fromstring ein Element generiert und keinen ElementTree! Weiß jemand, wie man das umgeht?
Samuel Lampa

4
Gleiches Problem wie bei @SamuelLampa erwähnt. Ich bin kein ElementTree, ich bin nicht in der Lage zu tun getroot()für diesen
Siddharth Menon

23
@SamuelLampa siehe dgassaways Antwort , benutzeET.ElementTree(ET.fromstring(xmlstring))
Colin Pickard

6
Für die richtige Antwort siehe die von @dgassaway
2.718

Vergessen Sie nicht die Import-Anweisungen
Stevoisiak

225

Sie können den Text als Zeichenfolge analysieren, die ein Element erstellt, und mit diesem Element einen Elementbaum erstellen.

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

Ich bin gerade auf dieses Problem gestoßen, und die Dokumentation ist zwar vollständig, aber hinsichtlich des Unterschieds in der Verwendung zwischen den Methoden parse()und nicht sehr einfach fromstring().


5
Die zweite Zeile kann einfach sein root = ET.fromstring(xmlstring). Equals ET.parse('file.xml').getroot(): docs.python.org/3.6/library/...
Anton Tarasenko

3
@Anton, wie im OP angegeben, besteht die Idee darin, einen ElementTree und kein Element zu generieren. Dies ist beispielsweise nützlich, wenn Sie ElementTree.write () verwenden möchten.
Batbrat

16

Du brauchst das xml.etree.ElementTree.fromstring(text)

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.