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

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'}]

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

(0)

相关推荐

  • python中执行shell命令的几个方法小结

    最近有个需求就是页面上执行shell命令,第一想到的就是os.system, 复制代码 代码如下: os.system('cat /proc/cpuinfo') 但是发现页面上打印的命令执行结果 0或者1,当然不满足需求了. 尝试第二种方案 os.popen() 复制代码 代码如下: output = os.popen('cat /proc/cpuinfo') print output.read() 通过 os.popen() 返回的是 file read 的对象,对其进行读取 read() 的

  • Python中的Numpy入门教程

    1.Numpy是什么 很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy.matplotlib一起使用.其实,list已经提供了类似于矩阵的表示形式,不过numpy为我们提供了更多的函数.如果接触过matlab.scilab,那么numpy很好入手. 在以下的代码示例中,总是先导入了numpy: 复制代码 代码如下: >>> import numpy as np>>> print np.version.version1.6.2

  • python中的字典详细介绍

    一.什么是字典? 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型. 字典类型与序列类型的区别: 1.存取和访问数据的方式不同. 2.序列类型只用数字类型的键(从序列的开始按数值顺序索引): 3.映射类型可以用其他对象类型作键(如:数字.字符串.元祖,一般用字符串作键),和序列类型的键不同,映射类型的

  • python操作日期和时间的方法

    不管何时何地,只要我们编程时遇到了跟时间有关的问题,都要想到 datetime 和 time 标准库模块,今天我们就用它内部的方法,详解python操作日期和时间的方法.1.将字符串的时间转换为时间戳 复制代码 代码如下: 方法:a = "2013-10-10 23:40:00"#将其转换为时间数组import timetimeArray = time.strptime(a, "%Y-%m-%d %H:%M:%S")#转换为时间戳:timeStamp = int(t

  • python 字符串split的用法分享

    比如我们的存储的格式的: 格式的: 姓名,年龄|另外一个用户姓名,年龄 name:haha,age:20|name:python,age:30|name:fef,age:55 那我们可以通过字符串对象的split方法切割字符串对象为列表. a = 'name:haha,age:20|name:python,age:30|name:fef,age:55' print a.split('|') 返回结果:['name:haha,age:20', 'name:python,age:30', 'name

  • Python 字符串操作方法大全

    1.去空格及特殊符号 复制代码 代码如下: s.strip().lstrip().rstrip(',') 2.复制字符串 复制代码 代码如下: #strcpy(sStr1,sStr2)sStr1 = 'strcpy'sStr2 = sStr1sStr1 = 'strcpy2'print sStr2 3.连接字符串 复制代码 代码如下: #strcat(sStr1,sStr2)sStr1 = 'strcat'sStr2 = 'append'sStr1 += sStr2print sStr1 4.查

  • Python中for循环详解

    与其它大多数语言一样,Python 也拥有 for 循环.你到现在还未曾看到它们的唯一原因就是,Python 在其它太多的方面表现出色,通常你不需要它们. 其它大多数语言没有像 Python 一样的强大的 list 数据类型,所以你需要亲自做很多事情,指定开始,结束和步长,来定义一定范围的整数或字符或其它可重复的实体.但是在 Python 中,for 循环简单地在一个列表上循环,与 list 解析的工作方式相同. 1. for  循环介绍 复制代码 代码如下: >>> li = ['a'

  • python逐行读取文件内容的三种方法

    方法一: 复制代码 代码如下: f = open("foo.txt")             # 返回一个文件对象  line = f.readline()             # 调用文件的 readline()方法  while line:      print line,                 # 后面跟 ',' 将忽略换行符      # print(line, end = '') # 在 Python 3中使用      line = f.readline()

  • Python 元组(Tuple)操作详解

    一.创建元组 复制代码 代码如下: tup1 = ('physics', 'chemistry', 1997, 2000);tup2 = (1, 2, 3, 4, 5 );tup3 = "a", "b", "c", "d"; 创建空元组 复制代码 代码如下: tup1 = (); 元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义 复制代码 代码如下: tup1 = (50,); 元组与字符串类似,下标索引从0开始,可以

  • Python读写Excel文件的实例

    最近由于经常要用到Excel,需要根据Excel表格中的内容对一些apk进行处理,手动处理很麻烦,于是决定写脚本来处理.首先贴出网上找来的读写Excel的脚本. 1.读取Excel(需要安装xlrd): #-*- coding: utf8 -*- import xlrd fname = "reflect.xls" bk = xlrd.open_workbook(fname) shxrange = range(bk.nsheets) try: sh = bk.sheet_by_name(

随机推荐