加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:02:47 所属栏目:百科 来源:网络整理
导读:转自 http://blog.csdn.net/yiluochenwu/article/details/23515923 XML文件内容: [html] view plain copy students student name = '刘备' sex = '男' age = '35' / student name = '吕布' sex = '男' age = '38' / student name = '貂蝉' sex = '女' age =

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


XML文件内容:

[html] view plain copy
  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'u5218u5907','sex':u'u7537'}]
  3. [3,{'age':'38','name':u'u5415u5e03','sex':u'u7537'}]
  4. [4,{'age':'22','name':u'u8c82u8749','sex':u'u5973'}]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读