首次处理XML文件遇报错:ElementTree对象无tag属性求排查提示
问题原因及解决方法
错误根源
ET.tostring()函数要求传入的是Element对象(XML节点),但你传入的是ElementTree对象(tree变量,由ET.parse()返回的是整个XML文档的树结构),这就导致了'ElementTree' object has no attribute 'tag'的报错——因为ElementTree没有tag属性,只有Element节点才有。
修正后的代码
先通过getroot()获取XML的根节点(Element对象),再传给ET.tostring():
from xml.etree import ElementTree as ET tree = ET.parse('some_xml_file.xml') root = tree.getroot() # 先拿到根Element节点 s = ET.tostring(root, method='xml') # 传入root而非tree
额外提示
- 清晰区分
ElementTree和Element:ET.parse()返回的是整个文档的树结构(ElementTree),它负责管理整个XML文档getroot()从树中提取根节点(Element),所有节点操作都基于Element对象
- 如果只是需要读取XML文件的原始文本(不需要解析XML结构),可以直接用文件读取:
with open('some_xml_file.xml', 'r', encoding='utf-8') as f: xml_str = f.read()
内容的提问来源于stack exchange,提问作者Ahmad Hamdy
相关产品推荐
相关产品推荐

