【问题标题】:Read dynamic xml using element tree使用元素树读取动态 xml
【发布时间】:2010-10-24 16:55:13
【问题描述】:

环境:Windows、Python、wxpython 和元素树作为 xml 解析器。

我正在开发一个独立的设备,它可以读取 xml 并创建一棵树。 我的应用程序读取 xml 并创建树,但是当 xml 下次更改时(当 xml 的深度增加时 - 我的意思是添加两个子元素时)。应用程序无法读取(逻辑失败:()

例如 我编写了一个逻辑,可以读取深度为 5 的任何 xml。但是当它读取深度超过 5 的 xml 时,它会失败。 请让我知道如何读取深度是动态的 xml。

【问题讨论】:

  • 听起来问题可能出在你的逻辑上,你为什么不贴出来?
  • @罗伯特·克鲁因。嗨,我在以下要点中添加了不同深度的示例代码。请在此处找到它 - gist.github.com/643697。 (要点:643697)。我的代码可以读取示例 xml1 但无法读取示例 xml 2

标签: python xml elementtree


【解决方案1】:

你应该使用递归调用,更像是:

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.'

并非所有元素都具有“名称”属性。因此,您需要调整它以匹配您的确切数据结构。

【讨论】:

  • 感谢您的快速回复。我上传的 XML 是一个虚拟的。在我的应用程序中,每个元素都有“名称”属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多