Python:合法XML树调用getchildren()报AttributeError问题求助
解决AttributeError: 'ElementTree' object has no attribute 'getchildren'
嘿,这个问题其实是个常见的小误区——你搞混了ElementTree对象和Element对象的方法!
tree = ET.parse(...)返回的是整个XML树的容器(ElementTree实例),而getchildren()是**单个XML节点(Element实例)**才有的方法。你得先拿到XML的根节点,再操作它。
修正后的代码
这里给你调整好的版本,顺便解决了路径转义的小坑:
import xml.etree.ElementTree as ET # 路径前加r前缀,避免反斜杠被当成转义字符 tree = ET.parse(r'C:\temp\test2.xml') # 获取XML的根元素 root = tree.getroot() # 获取根元素的直接子节点,Python 3.9+推荐这种写法 print(list(root)) # 如果你用的是Python 3.8及更早版本,也可以用已弃用的getchildren() # print(root.getchildren())
补充说明
- 关于路径:Windows路径里的反斜杠
\在Python字符串里会被解析为转义字符,加r前缀变成原始字符串就能避免这个问题。 - 关于
getchildren():这个方法在Python 3.9之后已经被移除了,官方推荐直接把Element对象转为列表来获取直接子节点,或者用root.iter()来遍历所有后代节点,这样代码兼容性更好。
内容的提问来源于stack exchange,提问作者intrigued_66
相关产品推荐
相关产品推荐

