繁体   English   中英

如何解析多个xml文件并将属性传递给csv?

[英]How to parse multiple xml files and pass through attributes into csv?

我需要将一个 xml 文件目录解析为一个大的 csv 文件,我需要元素“Param”下的某些属性(属性是“Name”和“PNum”)。 在名为 Content.xml 的目录中有另一个 XML 文件,我可以获取其他 XML 文件的所有名称并将它们设置为 FileName。 问题是我无法弄清楚如何在每个 XML 文件中获取这些属性,因为每个 XML 文件都有不同的组织,有些似乎一开始就没有这些属性。

我编写了适用于目录中的 XML 文件之一的代码,该文件输出包含所有相关信息的 CSV 文件。

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()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM