使用ElementTree仅复制具有相关帖子的XML结构

时间:2019-01-15 14:59:59

标签: python python-3.x xml-parsing elementtree

我有一个Python脚本,该脚本可以解析许多具有相同结构的XML文件,找到相关元素并打印所有标记和修饰符(并写入文件,但我想创建一些结构化数据)。

这工作得很好,但是我想创建一个新XML文件来镜像原始文件的结构,但只能使用与我指定的模式匹配的元素。

以下是搜索文件的功能:

import xml.etree.cElementTree as ET
import glob

filename = "media_code2_output.txt"

def find_mediacode2(inputfile, outputfile):
    #find parent node
    for parent in root.iter("musa"):
        #parent node attribute "dr-production" must be true (as string)
        if parent.attrib["dr-production"] == "true":
            #each child element must have media-code element be 2.
            for mediekode in parent.iter("media-code"):
                if mediekode.text  == "2":
                    #pint all fields
                    for field in parent.iter():
                        print(field.tag, field.attrib, field.text)
                        #write all fields to file
                        outputfile.write(str(field.tag) + " " + str(field.attrib) + " " + str(field.text) + "\n") 
                    #print spacer line 
                    outputfile.write("\n"+"-"*80+"\n")
                    print("\n"+"-"*80+"\n")


for inputfile in glob.glob('*/*.xml'):
    tree = ET.parse(inputfile)
    root = tree.getroot()

    with open(filename, "a+") as outputfile:
        find_mediacode2(root, outputfile)

以下是文件中数据的示例: https://pastebin.com/AHEcDv36

理想情况下,我想在Access数据库中表示数据。

0 个答案:

没有答案