场景:
在分析xml 结构的时候,往往一眼就被元素的参差嵌套弄晕了,有的编辑工具是支持格式化的,对我们阅读很有帮助,我这里使用python做了一个标签嵌套格式的打印工具,对 xml 阅读也有一定帮助。
代码:
import xml.etree.ElementTree as ET
from xml.etree.ElementTree import Element
import sys, os
stfile = 'b.xml'
tree = ET.parse(stfile)
root = tree.getroot()
cur_inx = 0
itera_list = [[[root],0,1,0]] # [元素[当前节点下的所有子节点[],当前遍历的下标,子节点长度,子节点所处深度]]
eiter = None
index_e = ' '
while True:
if len(itera_list) == 0:
break
if eiter == None:#
eiter = itera_list[0]
if eiter[1] != 0:
eiter = itera_list[-1]
itera_list.pop()
cur_inx -= 1
else:
itera_list.pop(0)
is_atem = 0
for ei,ee in enumerate(eiter[0][eiter[1]:]):
if isinstance(ee, Element):
print(str(eiter[3])+':', end=' ')
print(index_e * eiter[3] + ee.tag)
is_atem = 1
el = list(ee)
if len(el) == 0:
continue
itera_list.insert(0, [el, 0, len(el),eiter[3]+1])
cur_inx += 1
break
if eiter[1] + ei < eiter[2]-1:
eiter[1] += ei + 1
itera_list.append(eiter)
eiter = None