El ElementTree.parse lee de un archivo, ¿cómo puedo usar esto si ya tengo los datos XML en una cadena?
Tal vez me falte algo aquí, pero debe haber una manera de usar ElementTree sin escribir la cadena en un archivo y volver a leerlo.
El ElementTree.parse lee de un archivo, ¿cómo puedo usar esto si ya tengo los datos XML en una cadena?
Tal vez me falte algo aquí, pero debe haber una manera de usar ElementTree sin escribir la cadena en un archivo y volver a leerlo.
Respuestas:
Si está usando xml.etree.ElementTree.parse
para analizar desde un archivo, entonces puede usarxml.etree.ElementTree.fromstring
para analizar desde texto.
getroot()
por esto
ET.ElementTree(ET.fromstring(xmlstring))
Puede analizar el texto como una cadena, lo que crea un elemento y crear un árbol de elementos utilizando ese elemento.
import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))
Me acabo de encontrar con este problema y la documentación, aunque completa, no es muy sencilla sobre la diferencia de uso entre los métodos parse()
y fromstring()
.
root = ET.fromstring(xmlstring)
. Equals ET.parse('file.xml').getroot()
: docs.python.org/3.6/library/…
io.StringIO es otra opción para introducir XML en xml.etree.ElementTree :
import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()
Pase el mouse, no afecta la declaración XML en la que se supondría que está tree
(aunque eso es necesario para ElementTree.write () ). Consulte Cómo escribir una declaración XML usando xml.etree.ElementTree .