O ElementTree.parse lê um arquivo, como posso usar isso se já tenho os dados XML em uma string?
Talvez eu esteja faltando alguma coisa aqui, mas deve haver uma maneira de usar o ElementTree sem gravar a string em um arquivo e lê-la novamente.
O ElementTree.parse lê um arquivo, como posso usar isso se já tenho os dados XML em uma string?
Talvez eu esteja faltando alguma coisa aqui, mas deve haver uma maneira de usar o ElementTree sem gravar a string em um arquivo e lê-la novamente.
Respostas:
Se você estiver usando xml.etree.ElementTree.parse
para analisar de um arquivo, poderá usar xml.etree.ElementTree.fromstring
para analisar de texto.
getroot()
por isso
ET.ElementTree(ET.fromstring(xmlstring))
Você pode analisar o texto como uma string, o que cria um elemento e criar um ElementTree usando esse elemento.
import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))
Acabei de encontrar esse problema e a documentação, embora completa, não é muito direta quanto à diferença de uso entre os métodos parse()
e fromstring()
.
root = ET.fromstring(xmlstring)
. Igual a ET.parse('file.xml').getroot()
: docs.python.org/3.6/library/…
io.StringIO é outra opção para obter XML em xml.etree.ElementTree :
import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()
No entanto, isso não afeta a declaração XML que se presumiria estar tree
(embora isso seja necessário para ElementTree.write () ). Consulte Como escrever uma declaração XML usando xml.etree.ElementTree .