python xml.etree.ElementTree遍历xml所有节点实例详解


Posted in Python onDecember 04, 2016

python xml.etree.ElementTree遍历xml所有节点

XML文件内容:

<students> 
  <student name='刘备' sex='男' age='35'/> 
  <student name='吕布' sex='男' age='38'/> 
  <student name='貂蝉' sex='女' age='22'/> 
</students>

代码:

#-*- coding: UTF-8 -*-  
# 从文件中读取数据 
import xml.etree.ElementTree as ET 
 
#全局唯一标识 
unique_id = 1 
 
#遍历所有的节点 
def walkData(root_node, level, result_list): 
  global unique_id 
  temp_list =[unique_id, level, root_node.tag, root_node.attrib] 
  result_list.append(temp_list) 
  unique_id += 1 
   
  #遍历每个子节点 
  children_node = root_node.getchildren() 
  if len(children_node) == 0: 
    return 
  for child in children_node: 
    walkData(child, level + 1, result_list) 
  return 
 
#获得原始数据 
#out: 
#[ 
#  #ID, Level, Attr Map 
#  [1, 1, {'ID':1, 'Name':'test1'}], 
#  [2, 1, {'ID':1, 'Name':'test2'}], 
#] 
def getXmlData(file_name): 
  level = 1 #节点的深度从1开始 
  result_list = [] 
  root = ET.parse(file_name).getroot() 
  walkData(root, level, result_list) 
 
  return result_list 
 
if __name__ == '__main__': 
  file_name = 'test.xml' 
  R = getXmlData(file_name) 
  for x in R: 
    print x 
  pass

输出结果:

[1, 1, 'students', {}] 
[2, 2, 'student', {'age': '35', 'name': u'\u5218\u5907', 'sex': u'\u7537'}] 
[3, 2, 'student', {'age': '38', 'name': u'\u5415\u5e03', 'sex': u'\u7537'}] 
[4, 2, 'student', {'age': '22', 'name': u'\u8c82\u8749', 'sex': u'\u5973'}]

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
May 23 Python
python文件和目录操作函数小结
Jul 11 Python
Python的Django框架中settings文件的部署建议
May 30 Python
浅谈python可视化包Bokeh
Feb 07 Python
Python使用pickle模块储存对象操作示例
Aug 15 Python
Python中字符串String的基本内置函数与过滤字符模块函数的基本用法
May 27 Python
关于Python作用域自学总结
Jun 10 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
pytorch中交叉熵损失(nn.CrossEntropyLoss())的计算过程详解
Jan 02 Python
python使用列表的最佳方案
Aug 12 Python
python实现粒子群算法
Oct 15 Python
Python性能提升之延迟初始化
Dec 04 #Python
python中redis的安装和使用
Dec 04 #Python
Python正则表达式使用范例分享
Dec 04 #Python
Python常用库推荐
Dec 04 #Python
Python 正则表达式的高级用法
Dec 04 #Python
简单谈谈Python流程控制语句
Dec 04 #Python
python中正则的使用指南
Dec 04 #Python
You might like
模仿OSO的论坛(五)
2006/10/09 PHP
PHP imagegrabscreen和imagegrabwindow(截取网站缩略图)的实例代码
2013/11/07 PHP
一个经典的PHP文件上传类分享
2014/11/18 PHP
php编写简单的文章发布程序
2015/06/18 PHP
CI(CodeIgniter)框架视图中加载视图的方法
2017/03/24 PHP
PHP的PDO预处理语句与存储过程
2019/01/27 PHP
js 操作符实例代码
2009/10/24 Javascript
jquery构造器的实现代码小结
2011/05/16 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
2016/06/06 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
TypeScript 运行时类型检查补充工具
2020/09/28 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
[01:00]一分钟回顾2018DOTA2亚洲邀请赛现场活动
2018/04/07 DOTA
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
Python复制目录结构脚本代码分享
2015/03/06 Python
Python pickle模块用法实例分析
2015/05/27 Python
同时安装Python2 &amp; Python3 cmd下版本自由选择的方法
2017/12/09 Python
python机器学习理论与实战(一)K近邻法
2021/01/28 Python
python中使用zip函数出现错误的原因
2018/09/28 Python
django中使用Celery 布式任务队列过程详解
2019/07/29 Python
Django 拆分model和view的实现方法
2019/08/16 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
阿迪达斯希腊官方网上商店:adidas希腊
2019/04/06 全球购物
大专毕业生自我评价分享
2013/11/10 职场文书
楚门的世界观后感
2015/06/03 职场文书
委托收款证明
2015/06/23 职场文书
护士旷工检讨书
2015/08/15 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
JavaScript 反射学习技巧
2021/10/16 Javascript