gpt4 book ai didi

python - 使用 ElementTree 解析嵌套的无界 XML 字段

转载 作者:太空宇宙 更新时间:2023-11-04 06:08:41 25 4
gpt4 key购买 nike

我有一个 XML 文件,其中有一个名为“节点”的元素。这些可以嵌套到任何深度,我不知道嵌套的深度。我需要解析文件并保留嵌套。例如,如果 XML 文件有:

<Node Name="A">
<Node Name="B">
<Node Name="C">
<Node Name="D">
<Node Name="E">

当我解析节点“E”时,我需要知道我在 A/B/C/D/E 中。问题是我不知道这有多深。这是我到目前为止的代码:

nodes = []

def parseChild(c):
if c.tag == 'Node':
if 'Name' in c.attrib:
nodes.append(c.attrib['Name'])
for c1 in c:
parseChild(c1)
else:
for node in nodes:
print node,
print c.tag

for parent in tree.getiterator():
for child in parent:
for x in child:
parseChild(x)

我的问题是我不知道什么时候我完成了一个节点并且我应该移除一层嵌套。我认为这是一种相当普遍的情况,但我找不到任何像这样解析文件的例子。也许我完全错了。

最佳答案

在 python 列表的帮助下,我能够解决这个问题。基本上我是这样做的:

  nodes = []

def process_subtree(c, path):
name = c.get('Name') if c.tag == 'Node' else None
if name:
path.append(name)
nodes.append('/'.join(path))

for c1 in c:
process_subtree(c1, path)

if name:
path.pop()

process_subtree(tree.getroot(), [])

关于python - 使用 ElementTree 解析嵌套的无界 XML 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20203904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com