gpt4 book ai didi

Python - 如何确定已解析 XML 元素的层次结构级别?

转载 作者:数据小太阳 更新时间:2023-10-29 01:56:35 25 4
gpt4 key购买 nike

我正在尝试使用 Python 从 XML 文件中解析具有特定标记的元素并生成输出 excel 文档,该文档将包含元素并保留其层次结构。

我的问题是我无法弄清楚每个元素(解析器迭代)的嵌套深度。

XML 示例摘录(3 个元素,它们可以任意嵌套在它们自身中):

<A>
<B>
<C>
</C>
</B>
</A>
<B>
<A>
</A>
</B>

以下代码使用 ElementTree 可以很好地迭代元素。但我认为 ElementTree 无法确定每个元素的嵌套深度。见下文:

import xml.etree.ElementTree as ET

root = ET.parse('XML_file.xml')
tree = root.getroot()
for element in tree.iter():
if element.tag in ("A","B","C"):
print(element.tag)

这将使我以正确的顺序获取元素 A、B、C 的列表。但是我需要把他们的水平信息打印出来,

所以不仅:

A
B
C
B
A

但是像这样:

A
--B
----C
B
--A

为了能够做到这一点,我需要获取每个元素的级别。是否有适合 python 的解析器可以轻松地做到这一点?我会想象像“element.hierarchyLevel”这样的东西会返回一些整数索引......

最佳答案

尝试使用递归函数来跟踪您的“级别”。

import xml.etree.ElementTree as ET

def perf_func(elem, func, level=0):
func(elem,level)
for child in elem.getchildren():
perf_func(child, func, level+1)

def print_level(elem,level):
print '-'*level+elem.tag

root = ET.parse('XML_file.xml')
perf_func(root.getroot(), print_level)

关于Python - 如何确定已解析 XML 元素的层次结构级别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15748528/

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