python 处理 xml 标签

场景:
在分析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
              
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值