使用元素树读取动态XML
环境:Windows,Python,wxpython 和 Element tree 作为 XML 解析器。
我正在开发一个独立的应用程序,它可以读取 XML 文件并创建一个树形结构。我的应用程序可以读取 XML 并创建树,但当下次 XML 发生变化时(比如 XML 的深度增加了——也就是说,添加了两个子元素),应用程序就无法读取了(逻辑出错了 :()。
举个例子,我写了一段逻辑,可以读取深度为 5 的任何 XML 文件。但当它读取深度超过 5 的 XML 文件时,就会失败。请告诉我如何读取深度是动态变化的 XML 文件。
1 个回答
2
你应该使用递归调用,像这样:
def recurse_tree(node):
tree = {}
for element in node:
name = element.get('name')
tree[name] = recurse_tree(element)
if tree:
return tree
else:
return 'No children.'
并不是你所有的元素都有'名称'属性。所以你需要根据你的具体数据结构来调整这个。