ElementTree.parse читає з файлу, як я можу це використовувати, якщо у мене вже є XML-дані в рядку?
Можливо, мені щось тут не вистачає, але повинен бути спосіб використовувати ElementTree, не виписуючи рядок у файл і читаючи його знову.
ElementTree.parse читає з файлу, як я можу це використовувати, якщо у мене вже є XML-дані в рядку?
Можливо, мені щось тут не вистачає, але повинен бути спосіб використовувати ElementTree, не виписуючи рядок у файл і читаючи його знову.
Відповіді:
Якщо ви використовуєте xml.etree.ElementTree.parseдля розбору з файлу, ви можете використовувати xml.etree.ElementTree.fromstringдля розбору тексту.
Дивіться xml.etree.ElementTree
getroot()для цього
ET.ElementTree(ET.fromstring(xmlstring))
Ви можете проаналізувати текст як рядок, який створює елемент, і створити ElementTree, використовуючи цей елемент.
import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))
Я щойно стикався з цим питанням, і документація, хоча вона є повною, не є однозначною щодо різниці у використанні між методами parse()та fromstring()методами.
root = ET.fromstring(xmlstring). Так само ET.parse('file.xml').getroot(): docs.python.org/3.6/library / ...
io.StringIO - це ще один варіант для введення XML у xml.etree.ElementTree :
import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()
Навіть, це не впливає на декларацію XML, яку можна було б вважати tree(хоча це потрібно для ElementTree.write () ). Див. Як написати XML-декларацію за допомогою xml.etree.ElementTree .