当我不知道将有多少级别时,如何循环遍历数据结构的所有级别以提取所有数据?

use*_*170 2 python xml loops data-structures

我需要从结构中提取数据并将其放入列表中,但我不知道结构有多少级别.

对于每个级别,我可以调用level.children(),如果当前级别之下没有级别,则返回[],如果有,则返回[object, object, ...],在每个级别上我可以children()再次调用.

我需要深入了解结构,直到我将所有级别的数据提取到列表中.

当基于这样的结构:

<name>John Smith</name>
<team link="http://teamwebsite.com">
    <name>Team Name</name>
</team>
<games>
    <location>
        <venue>A stadium</venue>
    </location>
</games>
Run Code Online (Sandbox Code Playgroud)

该列表应如下所示:

[
    [
        {'name': 'name', 'attrs': {}, 'text': 'John Smith', 'parent': None},
    ],
    [
        {'name': 'team', 'attrs': {'link': 'http://teamwebsite.com'}, 'text': '', 'parent': None},
        {'name': 'name', 'attrs': {}, 'text': 'Team Name', 'parent': 1}, # the reference to its parent's position in the list
    ],
    [
        {'name': 'games', 'attrs': {}, 'text': '', 'parent': None},
        {'name': 'location', 'attrs': {}, 'text': '', 'parent': 1},
        {'name': 'venue', 'attrs': {}, 'text': 'A stadium', 'parent': 2},
    ],
]
Run Code Online (Sandbox Code Playgroud)

我试图找出我用来从数据结构到我的列表的Python.我需要一种自我延续的循环,但我无法想出一个好的解决方案.

有什么能指引我正确的方向吗?我确信这种事情有一些很好的理论,我完全不知道,但很乐意阅读.

Jas*_*yon 10

你所描述的递归,但我猜有更好的,方式,,解析,XML.

  • @Thomas Owens:通过解析它我的意思是不必编写算法来自己解析它... (2认同)

Chr*_*all 5

您在这里使用的概念称为" 递归 ".