Как обновить XML файл в Python динамически? - PullRequest
0 голосов
/ 25 марта 2020

У меня есть XML документ, который я хотел бы обновить из отдельного фрейма данных.

Например, я хотел бы обновить все пустые идентификаторы субподряда ('extra1') в моем XML, которые я хотел бы обновить посмотрите на этот фрейм данных, так что вместо каждого из этих текстов узлов empy в XML будет вставлено уникальное значение.

Я мог бы управлять обновлением текста узла с одним значением, но что если это переменная? Возможно ли вообще такое массовое обновление?

Я пробовал следующее:

Запрос и информационный фрейм для свободных узлов 'extra1' в XML:

data = []

import xml.etree.ElementTree as ET
import pandas as pd

tree = ET.parse('Claims.xml')
root = tree.getroot()

for claims in root:
    for claim in claims:
        for customer in claim.findall('customer'):
            extra1 = customer.find('extra1').text
            if extra1 is None and contractId is not None:
                for extra1 in customer.findall('extra1'):
                    extra1 = customer.find('extra1').text
                for contractId in customer.findall('contractId'):
                    contractId = int(customer.find('contractId').text)
                for uid in customer.findall('uid'): # unique identifier
                    uid = customer.find('uid').text

                    data.append((uid, contractId, extra1))
                    cols = ['uid', 'contractId', 'extra1']

                    tree.write('output2.xml', encoding = 'UTF-8')

customer2 = pd.DataFrame(data, columns = cols)
display(customer2)

Что даст мне что-то вроде этого:

  • uid: 1115565, 1115566, 1115567
  • contractId: 45823457, 45823458, 45823459
  • extra1: Нет, Нет, Нет

Затем я просматриваю пропущенные значения в рассматриваемом фрейме данных.

Как только это будет сделано, как мне записать значения обратно в XML, если предположить, что есть не только три строки, но, скажем, сто, поэтому ручное обновление не будет возможным?

Спасибо за вашу помощь и предложения заранее!

...