Python XML转CSV代码生成空文件,请求排查问题及修正
XML转CSV代码错误排查与修复
问题根源
你的代码错误在于混淆了XML元素的属性和子元素:
- 你提供的XML中,
<row>节点的所有数据都存储在属性(如Id、UserId)中,而非子元素里 - 原代码试图通过
root[0].tag和record.find()来获取子元素,这完全不符合当前XML的结构,导致表头为空,数据行也无法读取
修正后的代码
import csv import xml.etree.ElementTree as ET def xml_to_csv(xml_file, csv_file): # 解析XML文件 tree = ET.parse(xml_file) root = tree.getroot() # 获取表头:取第一个row的所有属性名 if not root: return header = list(root[0].attrib.keys()) # 写入CSV文件 with open(csv_file, 'w', newline='', encoding='utf-8') as csvfile: writer = csv.writer(csvfile) writer.writerow(header) # 遍历每个row节点,提取属性值 for record in root: row = [record.attrib[key] for key in header] writer.writerow(row) xml_to_csv("Badges.xml", "Badges.csv")
关键修改点
- 用
root[0].attrib.keys()获取属性名作为表头,而非子元素标签 - 用
record.attrib[key]直接读取属性值,替代原代码中查找子元素的逻辑 - 增加了
encoding='utf-8'确保CSV文件编码正确,避免乱码 - 增加空XML判断,防止索引越界错误
内容的提问来源于stack exchange,提问作者Abhishek Kadam
相关产品推荐
相关产品推荐

