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

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
xml.etree.ElementTree
etree.elementtree、lxml.etree.element、messageelement 遍历、element遍历、jsoup element遍历,以便于您获取更多的相关知识。

时间: 2024-10-01 02:34:21

python xml.etree.ElementTree遍历xml所有节点实例详解_python的相关文章

python time模块用法实例详解_python

本文详细讲述了python的内嵌time模块的用法.分享给大家供大家参考之用.具体分析如下:   一.简介 time模块提供各种操作时间的函数 说明:一般有两种表示时间的方式: 第一种是时间戳的方式(相对于1970.1.1 00:00:00以秒计算的偏移量),时间戳是惟一的 第二种以数组的形式表示即(struct_time),共有九个元素,分别表示,同一个时间戳的struct_time会因为时区不同而不同 year (four digits, e.g. 1998) month (1-12) da

python xml解析实例详解_python

python xml解析 first.xml  <info> <person > <id>1</id> <name>fsy</name> <age >24</age> </person> <person> <id>2</id> <name>jianjian</name> <age>24</age> </pers

python 排序算法总结及实例详解_python

总结了一下常见集中排序的算法 归并排序 归并排序也称合并排序,是分治法的典型应用.分治思想是将每个问题分解成个个小问题,将每个小问题解决,然后合并. 具体的归并排序就是,将一组无序数按n/2递归分解成只有一个元素的子项,一个元素就是已经排好序的了.然后将这些有序的子元素进行合并. 合并的过程就是 对 两个已经排好序的子序列,先选取两个子序列中最小的元素进行比较,选取两个元素中最小的那个子序列并将其从子序列中 去掉添加到最终的结果集中,直到两个子序列归并完成. 代码如下: #!/usr/bin/p

python的迭代器与生成器实例详解_python

本文以实例详解了python的迭代器与生成器,具体如下所示: 1. 迭代器概述:  迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.  1.1 使用迭代器的优点  对于原生支持随机访问的数据结构(如tuple.list),迭代器和经典for循环的索引访问相比并无优势,反而丢失了索引值(可以使用内建函数enumerate()找回这个索引值).但对于无法随机访问的数据结构(比如se

Python文件操作类操作实例详解_python

本文讲述了Python文件操作类的操作实例,详细代码如下: #!/usr/bin/env python #!/usr/bin/env python #coding:utf-8 # Purpose: 文件操作类 #声明一个字符串文本 poem=''' Programming is fun测试 When the work is done if you wanna make your work also fun: use Python! ''' #创建一个file类的实例,模式可以为:只读模式('r'

Python中的闭包实例详解_python

一般来说闭包这个概念在很多语言中都有涉及,本文主要谈谈python中的闭包定义及相关用法.Python中使用闭包主要是在进行函数式开发时使用.详情分析如下: 一.定义 python中的闭包从表现形式上定义(解释)为:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).这个定义是相对直白的,好理解的,不像其他定义那样学究味道十足(那些学究味道重的解释,在对一个名词的解释过程中又充满了一堆让人抓狂的其他陌生名词,不适合初学者).下面

python 根据正则表达式提取指定的内容实例详解_python

python 根据正则表达式提取指定的内容 正则表达式是极其强大的,利用正则表达式来提取想要的内容是很方便的事.   下面演示了在python里,通过正则表达式来提取符合要求的内容. 实例代码: import re # 正则表达式是极其强大的,利用正则表达式来提取想要的内容是很方便的事. # 下面演示了在python里,通过正则表达式来提取符合要求的内容.有几个要注意 # 的地方就是: # [1] 要用()将需要的内容包含起来 # [2] 编号为0的group是整个符合正则表达式的内容,编号为1

利用Python破解验证码实例详解_python

一.前言 本实验将通过一个简单的例子来讲解破解验证码的原理,将学习和实践以下知识点:       Python基本知识       PIL模块的使用 二.实例详解 安装 pillow(PIL)库: $ sudo apt-get update $ sudo apt-get install python-dev $ sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev \ libfreetype6-dev liblcms2-dev lib

python验证码识别的实例详解_python

其实关于验证码识别涉及很多方面的内容,入手难度大,但是入手后,可拓展性又非常广泛,可玩性极强,成就感也很足,对这感兴趣的朋友们下面跟着小编一起来学习学习吧. 依赖 sudo apt-get install python-imaging sudo apt-get install tesseract-ocr pip install pytesseract 利用google ocr来识别验证码 from PIL import Image import pytesseract image = Image