开发者社区> 问答> 正文

如何解析多个xml文件并将属性传递给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()

展开
收起
游客6qcs5bpxssri2 2019-09-08 20:37:23 717 0
1 条回答
写回答
取消 提交回答
  • 推荐回答

    很简单,你可以分两步完成:

    首先,枚举目录中的所有xml文件 在这些文件上执行代码 import xml.etree.ElementTree as ET import csv import os from glob import glob

    csv_out = open('CsvOut', 'w') csvwriter = csv.writer(csv_out)

    csv_head = ['Generation', 'Parameter Name', 'Parameter Number'] csvwriter.writerow(csv_head)

    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)
    

    csv_out.close()

    2019-09-08 20:38:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像