使用xml.etree.ElementTree遍历xml所有节点

来源:互联网 发布:c语言编程实例 编辑:程序博客网 时间:2024/06/04 16:10

转自 http://blog.csdn.net/yiluochenwu/article/details/23515923


XML文件内容:

[html] view plaincopy
  1. <students>  
  2.     <student name='刘备' sex='男' age='35'/>  
  3.     <student name='吕布' sex='男' age='38'/>  
  4.     <student name='貂蝉' sex='女' age='22'/>  
  5. </students>  

代码:

[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. #-*- coding: UTF-8 -*-   
  2. # 从文件中读取数据  
  3. import xml.etree.ElementTree as ET  
  4.   
  5. #全局唯一标识  
  6. unique_id = 1  
  7.   
  8. #遍历所有的节点  
  9. def walkData(root_node, level, result_list):  
  10.     global unique_id  
  11.     temp_list =[unique_id, level, root_node.tag, root_node.attrib]  
  12.     result_list.append(temp_list)  
  13.     unique_id += 1  
  14.       
  15.     #遍历每个子节点  
  16.     children_node = root_node.getchildren()  
  17.     if len(children_node) == 0:  
  18.         return  
  19.     for child in children_node:  
  20.         walkData(child, level + 1, result_list)  
  21.     return  
  22.   
  23. #获得原始数据  
  24. #out:  
  25. #[  
  26. #    #ID, Level, Attr Map  
  27. #    [1, 1, {'ID':1, 'Name':'test1'}],  
  28. #    [2, 1, {'ID':1, 'Name':'test2'}],  
  29. #]  
  30. def getXmlData(file_name):  
  31.     level = 1 #节点的深度从1开始  
  32.     result_list = []  
  33.     root = ET.parse(file_name).getroot()  
  34.     walkData(root, level, result_list)  
  35.   
  36.     return result_list  
  37.   
  38. if __name__ == '__main__':  
  39.     file_name = 'test.xml'  
  40.     R = getXmlData(file_name)  
  41.     for x in R:  
  42.         print x  
  43.     pass  

输出结果:

[python] view plaincopy在CODE上查看代码片派生到我的代码片
  1. [11'students', {}]  
  2. [22'student', {'age''35''name': u'\u5218\u5907''sex': u'\u7537'}]  
  3. [32'student', {'age''38''name': u'\u5415\u5e03''sex': u'\u7537'}]  
  4. [42'student', {'age''22''name': u'\u8c82\u8749''sex': u'\u5973'}] 
0 0
原创粉丝点击