我需要将一个 xml 文件目录解析为一个大的 csv 文件,我需要元素“Param”下的某些属性(属性是“Name”和“PNum”)。在名为 Content.xml 的目录中还有另一个 XML 文件,我可以获取其他 XML 文件的所有名称并将它们设置为 FileName。问题是我不知道如何在每个 XML 文件中获取这些属性,因为每个 XML 文件都有不同的组织,有些文件似乎一开始就没有这些属性。
我已经编写了适用于输出包含所有相关信息的 CSV 文件的目录中的 XML 文件之一的代码。
import xml.etree.ElementTree as ET
import csv
import os
FileName = '------.xml'
tree = ET.parse(FileName)
root = tree.getroot()[4]
csv_out = open('CsvOut', 'w')
csvwriter = csv.writer(csv_out)
count = 0
for child in root:
generation = []
parameters = []
if count == 0:
csv_head = ['Generation', 'Parameter Name', 'Parameter Number']
csvwriter.writerow(csv_head)
count = count + 1
gen = FileName[:-4]
generation.append(gen)
parameters.append(generation)
name = child.get('Name')
parameters.append(name)
num = child.get('PNum')
parameters.append(num)
csvwriter.writerow(parameters)
csv_out.close()
最佳答案
我比较简单,你可以分两步完成:
- 首先枚举目录下的所有xml文件
- 对这些文件执行您的代码
import xml.etree.ElementTree as ET
import csv
import os
from glob import glob
# create csv writer
csv_out = open('CsvOut', 'w')
csvwriter = csv.writer(csv_out)
# write the header
csv_head = ['Generation', 'Parameter Name', 'Parameter Number']
csvwriter.writerow(csv_head)
# iterate over the xml files in the current directory
for FileName in glob("*.xml"):
tree = ET.parse(FileName)
root = tree.getroot()[4]
for child in root:
generation = []
parameters = []
gen = FileName[:-4]
generation.append(gen)
parameters.append(generation)
name = child.get('Name')
parameters.append(name)
num = child.get('PNum')
parameters.append(num)
csvwriter.writerow(parameters)
# after iterating, close the csv file
csv_out.close()
关于python - 如何解析多个xml文件并将属性传递给csv?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57591754/