使用ElementTree在Python中处理XML

neo*_*neo 4 python xml parsing elementtree

我有一个ElementTree.iter()的问题.

所以我在这个链接中尝试了这个例子:http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree/

所以这就是我尝试过的:

import elementtree.ElementTree as ET
tree = ET.parse('XML_file.xml')
root = tree.getroot()
for elem in tree.iter():
    print elem.tag, elem.attrib
Run Code Online (Sandbox Code Playgroud)

我得到这个错误AttributeError:ElementTree实例没有属性'iter'

附加信息:我的Python版本是2.4我单独安装了elementtree.我提供的链接中的其他示例是在我的Python中安装.只有ElementTree.iter()不起作用.在此先感谢您的所有帮助.干杯!

pep*_*epr 20

在你的情况下,你应该替换.iter()by .getiterator(),你可能应该为root元素而不是树调用它(但我不确定,因为我没有Python 2.4和我手中的模块).

import elementtree.ElementTree as ET
tree = ET.parse('XML_file.xml')
root = tree.getroot()
for elem in root.getiterator():
    print elem.tag, elem.attrib
Run Code Online (Sandbox Code Playgroud)

这是Python 2.7中不推荐使用的旧功能.对于Python 2.7,.iter()应该使用内置模块:

import xml.etree.ElementTree as ET
tree = ET.parse('XML_file.xml')
root = tree.getroot()
for elem in root.iter():
    print elem.tag, elem.attrib
Run Code Online (Sandbox Code Playgroud)

旁注:标准模块也支持通过元素节点直接迭代(即没有.iter()或任何调用的方法,只是for elem in root:).它不同于.iter()- 它只通过直接后代节点.类似的功能在旧版本中实现.getchildren().