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

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


XML文件内容

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

代码

[python] view plain copy
  1. #-*-coding:UTF-8-*-
  2. #从文件中读取数据
  3. importxml.etree.ElementTreeasET
  4. #全局唯一标识
  5. unique_id=1
  6. #遍历所有的节点
  7. defwalkData(root_node,level,result_list):
  8. globalunique_id
  9. temp_list=[unique_id,root_node.tag,root_node.attrib]
  10. result_list.append(temp_list)
  11. unique_id+=1
  12. #遍历每个子节点
  13. children_node=root_node.getchildren()
  14. iflen(children_node)==0:
  15. return
  16. forchildinchildren_node:
  17. walkData(child,level+1,result_list)
  18. return
  19. #获得原始数据
  20. #out:
  21. #[
  22. ##ID,Level,AttrMap
  23. #[1,1,{'ID':1,'Name':'test1'}],
  24. #[2,'Name':'test2'}],
  25. #]
  26. defgetXmlData(file_name):
  27. level=1#节点的深度从1开始
  28. result_list=[]
  29. root=ET.parse(file_name).getroot()
  30. walkData(root,result_list)
  31. returnresult_list
  32. if__name__=='__main__':
  33. file_name='test.xml'
  34. R=getXmlData(file_name)
  35. forxinR:
  36. printx
  37. pass

输出结果:

[python] view plain copy
  1. [1,1,'students',{}]
  2. [2,2,'student',{'age':'35','name':u'\u5218\u5907','sex':u'\u7537'}]
  3. [3,{'age':'38','name':u'\u5415\u5e03','sex':u'\u7537'}]
  4. [4,{'age':'22','name':u'\u8c82\u8749','sex':u'\u5973'}]

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念