Копирование структуры XML только с соответствующими публикациями с использованием ElementTree - PullRequest
0 голосов
/ 15 января 2019

У меня есть скрипт 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.

...