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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python自动连接ssh的方法
Mar 07 Python
简单介绍Python中的decode()方法的使用
May 18 Python
python类装饰器用法实例
Jun 04 Python
Python脚本实现虾米网签到功能
Apr 12 Python
Python中最大最小赋值小技巧(分享)
Dec 23 Python
Python批量合并有合并单元格的Excel文件详解
Apr 05 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
django数据关系一对多、多对多模型、自关联的建立
Jul 24 Python
python时间日期操作方法实例小结
Feb 06 Python
编写python代码实现简单抽奖器
Oct 20 Python
Numpy ndarray 多维数组对象的使用
Feb 10 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
基于curl数据采集之正则处理函数get_matches的使用
2013/04/28 PHP
php根据日期判断星座的函数分享
2014/02/13 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
如何确保JavaScript的执行顺序 之实战篇
2011/03/03 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
让图片旋转任意角度及JQuery插件使用介绍
2013/03/20 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
Javascript的无new构建实例详解
2016/05/15 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
微信小程序 轮播图实现原理及优化详解
2019/09/29 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
vue-resource 拦截器interceptors使用详解
2021/01/18 Vue.js
python数据结构之二叉树的统计与转换实例
2014/04/29 Python
用Python中的字典来处理索引统计的方法
2015/05/05 Python
Python3.6安装及引入Requests库的实现方法
2018/01/24 Python
对Python 多线程统计所有csv文件的行数方法详解
2019/02/12 Python
Python3中列表list合并的四种方法
2019/04/19 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
用友笔试题目
2016/10/25 面试题
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
北体毕业生求职信
2014/02/28 职场文书
缅怀先烈主题班会
2015/08/14 职场文书
2019初中学生入团申请书
2019/06/27 职场文书
详解Vue的sync修饰符
2021/05/15 Vue.js
MySQL之select、distinct、limit的使用
2021/11/11 MySQL
24年收藏2000多部退役军用电台
2022/02/18 无线电
golang操作rocketmq的示例代码
2022/04/06 Golang