zoukankan      html  css  js  c++  java
  • 使用xml.etree.ElementTree遍历xml所有节点

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


    XML文件内容:

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

    代码:

    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  

    输出结果:

    1. [11'students', {}]  
    2. [22'student', {'age''35''name': u'u5218u5907''sex': u'u7537'}]  
    3. [32'student', {'age''38''name': u'u5415u5e03''sex': u'u7537'}]  
    4. [42'student', {'age''22''name': u'u8c82u8749''sex': u'u5973'}] 
  • 相关阅读:
    6月11日 python学习总结 框架理论
    6月7日 python 复习 collections
    6月6日 python复习 面向对象
    6月6日 python学习总结 jQuery (三)
    6月5日 python复习 模块
    6月5日 python学习总结 jQuery (二)
    6月4日 python学习总结 装饰器复习
    Redis源码分析(五)--- sparkline微线图
    Redis源码分析(六)--- ziplist压缩列表
    Redis源码分析(六)--- ziplist压缩列表
  • 原文地址:https://www.cnblogs.com/double12gzh/p/10166228.html
Copyright © 2011-2022 走看看