ElementTree.parse читает из файла, как я могу использовать это, если у меня уже есть данные XML в строке?
Возможно, мне что-то здесь не хватает, но должен быть способ использовать ElementTree, не записывая строку в файл и не читая ее снова.
ElementTree.parse читает из файла, как я могу использовать это, если у меня уже есть данные XML в строке?
Возможно, мне что-то здесь не хватает, но должен быть способ использовать ElementTree, не записывая строку в файл и не читая ее снова.
Ответы:
Если вы используете xml.etree.ElementTree.parse
для синтаксического анализа из файла, вы можете использовать xml.etree.ElementTree.fromstring
для синтаксического анализа текста.
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()
Hovever, это не влияет на объявление XML, которое можно было бы использовать tree
(хотя это необходимо для ElementTree.write () ). См. Как написать объявление XML с помощью xml.etree.ElementTree .