ElementTree.parse czyta z pliku, jak mogę tego użyć, jeśli mam już dane XML w ciągu?
Może czegoś mi brakuje, ale musi istnieć sposób na użycie elementu ElementTree bez zapisywania ciągu znaków do pliku i ponownego czytania.
ElementTree.parse czyta z pliku, jak mogę tego użyć, jeśli mam już dane XML w ciągu?
Może czegoś mi brakuje, ale musi istnieć sposób na użycie elementu ElementTree bez zapisywania ciągu znaków do pliku i ponownego czytania.
Odpowiedzi:
Jeśli używasz xml.etree.ElementTree.parse
do analizowania z pliku, możesz użyć xml.etree.ElementTree.fromstring
do analizy tekstu.
Zobacz xml.etree.ElementTree
getroot()
tego
ET.ElementTree(ET.fromstring(xmlstring))
Możesz przeanalizować tekst jako ciąg, który tworzy element, i utworzyć element ElementTree przy użyciu tego elementu.
import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))
Właśnie natknąłem się na ten problem, a dokumentacja, chociaż jest kompletna, nie jest bardzo prosta w zakresie różnic w użyciu między metodami parse()
i fromstring()
.
root = ET.fromstring(xmlstring)
. Równa się ET.parse('file.xml').getroot()
: docs.python.org/3.6/library/…
io.StringIO to kolejna opcja pobierania XML do xml.etree.ElementTree :
import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()
Jednak nie wpływa to na deklarację XML, którą można by przypuszczać tree
(chociaż jest to potrzebne dla ElementTree.write () ). Zobacz Jak napisać deklarację XML przy użyciu xml.etree.ElementTree .