我想用Python解析XML文件中的某些标记元素,并生成输出excel文档,该文档将包含元素并保留其层次结构。Python - 如何确定分析的XML元素的层次结构级别?
我的问题是,我无法弄清楚嵌套每个元素(在哪个分析器迭代)是多深。
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”,这将返回一些整数索引...
您需要使用某种形式的堆栈。遇到一个开放的标签,将它推入堆栈,关闭标签,弹出它。这样,堆栈长度将始终包含嵌套级别。 –
请注意,您几乎可以肯定想要导入'xml.etree.cElementTree',它比pure-python模块快很多倍并且100%兼容。 – user4815162342