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 .