使用元素树读取动态XML

3 投票
1 回答
1641 浏览
提问于 2025-04-16 06:01

环境: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.'

并不是你所有的元素都有'名称'属性。所以你需要根据你的具体数据结构来调整这个。

撰写回答