猿问

解析同一文件夹中的多个 XML 文件

我正在尝试解析存储在同一文件夹中的多个 XML 文件。xml 文件具有相同的格式。我想要做的是解析 xml 文件并将它们复制到另一个文件夹中,以便以后处理它们。


XML 文件如下所示:


<Racing type="Race">

  <Meeting sport="HH" meetingCode="349083" track="Lol" country="GB">

    <Race result="true" Available="true" raceNumber="13" id="13" revision="1" state="Final Result">

      <Result status="Final Result">

        <Position name="Foo" btnDistance="XX"/>

        <Position name="Ok" btnDistance="1"/>

        <Position name="Done" btnDistance="2"/>

      </Result>

    </Race>

  </Meeting>

</Racing>

到目前为止,我写的是下面的代码,它只读取一个 XML 文件并向我显示 RACE 元素及其属性。


import os

import xml.etree.ElementTree as et


base_path = os.path.dirname(os.path.realpath(__file__))


xml_file = os.path.join(base_path, "data\\c89b150a-7389-4f2f-a98b-9a241b12616c.xml")


tree = et.parse(xml_file)


root = tree.getroot()


for child in root:

    for element in child:

        print(element.tag, ":", element.attrib)

我现在想要做的是读取存储在同一路径中的多个 XML 文件,并找到那些带有meetingCode="349083" 的文件,以便它们将它们复制到不同的路径中,例如 C:\users\test。


能否请你帮忙 ?


之后,我的第二个需要是结合搜索,例如搜索并复制包含meetingCode="349083"和revision="1"的 xml 文件


提前致谢 !


胡子哥哥
浏览 199回答 1
1回答

一只斗牛犬

只需循环遍历文件夹中的所有 xml 文件,如下所示import osimport xml.etree.ElementTree as ETdef process(data):&nbsp; &nbsp; xml_obj = ET.fromstring(data)&nbsp; &nbsp; for race in xml_obj:&nbsp; &nbsp; &nbsp; &nbsp; for k,v in race.items():&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if k == 'meetingCode' and v == '349083':&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return True&nbsp; &nbsp; return Falsepath = '<xml_dir>'xml_files = os.listdir(path)for xml_file in files:&nbsp; &nbsp; xml_file_path = os.path.join(path, xml_file)&nbsp; &nbsp; fp = open(xml_file_path)&nbsp; &nbsp; data = myfile.read()&nbsp; &nbsp; if process(data):&nbsp; &nbsp; &nbsp; &nbsp;#copy the file
随时随地看视频慕课网APP

相关分类

Python
我要回答