【发布时间】:2010-10-13 10:07:50
【问题描述】:
ElementTree.parse 从文件中读取,如果我已经在字符串中包含 XML 数据,我该如何使用它?
也许我在这里遗漏了一些东西,但必须有一种方法可以使用 ElementTree 而无需将字符串写入文件并再次读取它。
【问题讨论】:
ElementTree.parse 从文件中读取,如果我已经在字符串中包含 XML 数据,我该如何使用它?
也许我在这里遗漏了一些东西,但必须有一种方法可以使用 ElementTree 而无需将字符串写入文件并再次读取它。
【问题讨论】:
您可以将文本解析为字符串,从而创建一个元素,并使用该元素创建一个 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/…
如果您使用xml.etree.ElementTree.parse 从文件中解析,那么您可以使用xml.etree.ElementTree.fromstring 来获取文档的根Element。通常你实际上并不需要ElementTree。
【讨论】:
getroot()
ET.ElementTree(ET.fromstring(xmlstring))
你需要xml.etree.ElementTree.fromstring(text)
from xml.etree.ElementTree import XML, fromstring
myxml = fromstring(text)
【讨论】:
ElementTree 它是根Element。这个 API 是不同的,不能做所有相同的事情。
io.StringIO 是将 XML 导入xml.etree.ElementTree 的另一种选择:
import io
f = io.StringIO(xmlstring)
tree = ET.parse(f)
root = tree.getroot()
但是,它不会影响人们假设在tree 中的 XML 声明(尽管 ElementTree.write() 需要这样做)。见How to write XML declaration using xml.etree.ElementTree。
【讨论】: