用python解析XML数据-如何以更具python风格的方式捕获所有内容?
其目的是捕获xml文件中的所有数据。捕获后,我会将其与参考xml文件进行比较,以确保没有任何更改,然后告诉您差异是什么 我写的东西可以满足我的需要,但非常繁琐,有点凌乱!有没有更好的方法可以遍历xml文件所有深度的所有项?解决方案必须是健壮的,才能捕获所有内容 目前,像我下面这样的迭代也可能使用try/的迭代层,但这非常难看用python解析XML数据-如何以更具python风格的方式捕获所有内容?,python,xml,loops,Python,Xml,Loops,其目的是捕获xml文件中的所有数据。捕获后,我会将其与参考xml文件进行比较,以确保没有任何更改,然后告诉您差异是什么 我写的东西可以满足我的需要,但非常繁琐,有点凌乱!有没有更好的方法可以遍历xml文件所有深度的所有项?解决方案必须是健壮的,才能捕获所有内容 目前,像我下面这样的迭代也可能使用try/的迭代层,但这非常难看 import xml.etree.ElementTree as ET def xml_iter(file): tree = ET.parse(file)
import xml.etree.ElementTree as ET
def xml_iter(file):
tree = ET.parse(file)
root = tree.getroot()
namespaces = {}
List = []
Parent = []
for elem in root:
for i in elem:
try:
i = i.text.strip()
List.append(i)
except:
pass
for j in i:
try:
j = j.text.strip()
List.append(j)
except:
pass
for k in j:
try:
k = k.text.strip()
List.append(k)
except:
pass
return (List)
任何帮助都将不胜感激。用户。它在所有子树上递归迭代
对于您的情况,它将类似于:
dict_list = []
text_list = []
for node in root.iter():
dict_list.append(node.attrib) # adds to list, the dictionary of attrib
text_list.append(node.text)
# do the same for other file and compare dictionaries/strings in corresponding lists.
你可以看看这位官员的例子。谢谢!那比我用的干净多了!由于某些原因,当我查看dict.list时,im解析的XML文件没有属性。但是,当我使用node.tag时,它会获取元素名。有没有办法从元素而不仅仅是元素中获取树地址?我的子树很深,所以几乎不可能找到元素名!!XML中可能根本没有属性。链接教程中给出的示例:此处为4,第一行node.tag为“country”;node.attrib为{“name”:“Singapore”},node.text为空。对于第二行,node.tag为“rank”,node.text为4,node.attrib为null。想想HTML,同时想想什么是标记、属性和文本。然后查看用例的“查找有趣的元素”部分。