Я устанавливаю скрипт на python, который будет запрашивать список входных XML-файлов, имеющих одинаковый формат, и считывать определенную строку из каждого XML-файла.
Все работает так, как я хочу, однако при чтении из файла XML возникает ошибка из-за содержимого самого файла XML.
У меня есть скрипт для работы, редактирующий файл xml, но это не решение для меня, так как мне нужен этот скрипт для запуска тысяч файлов
вот код, который я использую:
import os
import tkinter as tk
from tkinter import filedialog
import xml.etree.ElementTree as ET
root = tk.Tk()
root.withdraw()
file_path = filedialog.askopenfilenames()
tup=0
count = len(file_path)
for i in range(len(file_path)):
filename = os.path.basename(file_path[tup])
print('file =',os.path.basename(' '.join(file_path)))
tree = ET.parse(file_path[tup])
root = tree.getroot()
for child in root:
data = child.tag
print(data)
for data in root.findall(data):
name = data.find('subdata2').text
print('ID =', name)
tup +=1
и вот пример xml:
<?xml version="1.0"?>
<Data xmlns="link">
<subdata1 id = "something">
<subdata2>data
<subdata3>data</subdata3>
</subdata2>
</subdata1>
</Data>
Проблема возникает из текста, прикрепленного к корню "link3"
он изменяет тег subdata1 с
subdata1
до
{link}subdata1
и это затем меняет вывод с:
ID = data
до:
Traceback (most recent call last):
File "debug.py", line 25, in <module>
name = data.find('subdata2').text
AttributeError: 'NoneType' object has no attribute 'text'
Есть ли другой способ извлечения данных из этого XML-файла, который не включает изменение самого XML-файла?