来自字符串源的Python xml ElementTree?


117

ElementTree.parse从文件读取,如果字符串中已经有XML数据,该如何使用?

也许我在这里错过了一些东西,但是必须有一种使用ElementTree的方法,而无需将字符串写出到文件中并再次读取它。

xml.etree.elementtree


2
乔治,您好,如果您可以接受第二个答案(dgassaway)作为正确答案,那就太好了。
famargar

Answers:


89

如果您xml.etree.ElementTree.parse用于从文件中进行解析,则可以使用xml.etree.ElementTree.fromstring从文本中进行解析。

参见xml.etree.ElementTree


38
问题在于ElementTree.fromstring生成一个元素,而不是ElementTree!有谁知道如何解决这个问题?
塞缪尔·兰帕

4
与@SamuelLampa提到的问题相同。我不是ElementTree,我无法做到getroot()这一点
Siddharth Menon 2013年

23
@SamuelLampa看到dgassaway的回答,使用ET.ElementTree(ET.fromstring(xmlstring))
Colin Pickard

6
有关正确答案的信息,请参见@dgassaway提供的答案
2.718

不要忘记进口声明
Stevoisiak

225

您可以将文本解析为字符串,从而创建一个Element,并使用该Element创建ElementTree。

import xml.etree.ElementTree as ET
tree = ET.ElementTree(ET.fromstring(xmlstring))

我刚遇到这个问题,而文档虽然完整,但对于parse()fromstring()方法之间用法的区别并不是很简单。


5
第二行可以很简单root = ET.fromstring(xmlstring)。等于ET.parse('file.xml').getroot()docs.python.org/3.6/library/...
安东塔拉先科

3
正如OP所述,@ Anton的想法是生成ElementTree,而不是Element。例如,这在您要使用ElementTree.write()时很有用。
batbrat '18

16

你需要 xml.etree.ElementTree.fromstring(text)

from xml.etree.ElementTree import XML, fromstring
myxml = fromstring(text)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.