ElementTree.parse legge da un file, come posso usarlo se ho già i dati XML in una stringa?
Forse mi manca qualcosa qui, ma deve esserci un modo per usare ElementTree senza scrivere la stringa su un file e leggerlo di nuovo.
ElementTree.parse legge da un file, come posso usarlo se ho già i dati XML in una stringa?
Forse mi manca qualcosa qui, ma deve esserci un modo per usare ElementTree senza scrivere la stringa su un file e leggerlo di nuovo.
Risposte:
Se stai usando xml.etree.ElementTree.parseper analizzare da un file, puoi usarexml.etree.ElementTree.fromstring per analizzare dal testo.
Vedere xml.etree.ElementTree
getroot()per questo
ET.ElementTree(ET.fromstring(xmlstring))
Puoi analizzare il testo come una stringa, che crea un elemento e creare un ElementTree utilizzando quell'elemento.
import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))
Mi sono appena imbattuto in questo problema e la documentazione, sebbene completa, non è molto semplice sulla differenza di utilizzo tra i metodi parse()e fromstring().
root = ET.fromstring(xmlstring). Uguale a ET.parse('file.xml').getroot(): docs.python.org/3.6/library/…
io.StringIO è un'altra opzione per ottenere XML in xml.etree.ElementTree :
import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()
Tuttavia, non influisce sulla dichiarazione XML in cui si presume di trovarsi tree(sebbene sia necessario per ElementTree.write () ). Vedere Come scrivere una dichiarazione XML utilizzando xml.etree.ElementTree .