【发布时间】:2019-05-09 16:25:29
【问题描述】:
我正在设置一个 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 文件本身的方法?
【问题讨论】:
标签: xml python-3.x tkinter tk