You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解析XML报错AttributeError: 'NoneType' object has no attribute 'text'

错误原因

你对XML的结构层级理解有误:当前XML的根节点是<file>,根节点下仅存在一个<ALL_INSTANCES>子节点,所有的<instance>数据节点都存放在<ALL_INSTANCES>内部。你直接遍历根节点root时,拿到的第一个元素是<ALL_INSTANCES>,该节点下不存在<ID>子节点,find("ID")会返回None,调用.text自然触发AttributeError。

修复方案

只需将遍历对象修改为<ALL_INSTANCES>下的所有instance节点即可,修改后的完整代码如下:

import xml.etree.ElementTree as Xet
import pandas as pd
cols = ["ID", "Start", "End", "Player", "Team", "Action","Half","x","y"]
rows = []
  
# 解析XML文件
xmlparse = Xet.parse('Output.xml')
root = xmlparse.getroot()
# 先定位到ALL_INSTANCES节点,再遍历内部所有instance
all_instances = root.find('ALL_INSTANCES')
for i in all_instances.findall('instance'):
    ID = i.find("ID").text
    Start = i.find("start").text
    End = i.find("end").text
    Player= i.find("code").text
    Team = i.findall("./label[1]/text")[0].text
    Action = i.findall("./label[2]/text")[0].text
    Half = i.findall("./label[3]/text")[0].text
    x = i.find("pos_x").text
    y = i.find("pos_y").text
  
    rows.append({"ID": ID,
                 "Start": Start,
                 "End": End,
                 "Player": Player,
                 "Team": Team,
                 "Action": Action,
                 "Half": Half,
                 "x": x,
                 "y": y})
df = pd.DataFrame(rows, columns=cols)
  
# 输出为CSV,额外加了编码参数避免Excel打开乱码,不需要可删除
df.to_csv('output.csv', index=False, encoding='utf-8-sig')

内容的提问来源于stack exchange,提问作者JayRSP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 00:18:02