Python 解析xml文件的示例


Posted in Python onSeptember 29, 2020

1、获取xml树

import xml.etree.ElementTree as ET


def getTree(xmlName):
  xmlName = xmlName.strip()
  try:
    tree = ET.parse(xmlName)
  except:
    tree = None
    print 'Analysis xml file fail,file name: {}'.format(xmlName)
  return tree

2、获取根节点

def getRoot(tree):
  if tree is not None:
    root = tree.getroot()
  else:
    root = None
    print 'Get root fail'
  return root

3、查看根节点

def seeRoot(root):
  '''<country name="tan">我是小明</country>'''
  if root is not None:
    print 'root tag:', root.tag # 标签(country)
    print 'root attrib:', root.attrib # ?傩裕?ame="tan")
    print 'root text:', root.text # 文本(我是小明)
    print 'root tail:', root.tail # 尾字符串(未涉及)

4、从根开始遍历树

def traverseRoot(root):
  if root is not None:
    for label1 in root:
      print 'label1 tag:', label1.tag
      print 'label1 attrib:', label1.attrib
      print 'label1 text:', label1.text
      print 'label1 tail:', label1.tail
      print '=================='
      for label2 in label1:
        print 'label2 tag:', label2.tag
        print 'label2 attrib:', label2.attrib
        print 'label2 text:', label2.text
        print 'label2 tail:', label2.tail
        print '=================='
        for label3 in label2:
          print 'label3 tag:', label3.tag
          print 'label3 attrib:', label3.attrib
          print 'label3 text:', label3.text
          print 'label3 tail:', label3.tail
          print '=================='

5、找到2012年的gdppc和neighbor下的b标签(找到同层有条件的同层另一个tag的文本)

def findYouNedd(root):
  '''查找year为2012下的b标签的文本'''
  if root is not None:
    for label1 in root:
      for label2 in label1:
        if label1.tag == 'country' and label2.text == '2012': # 找到本层标签为country且下一层有2012文本
          print 'Find tag为country and next year=2012'
          for child in label1:
            if child.tag == 'gdppc':
              print child.text
            for youNeed in child:
              if youNeed.tag == 'b':
                print 'You need:', youNeed.text

6、查找父节点下的子节点

def findChildNode(fatherNode, childNode):
  childNode = childNode.strip()
  if fatherNode is not None:
    childs = fatherNode.findall(childNode)
    print childs
    print len(childs)

7、另一种办法实现第4点

def findYouNedd2(root):
  countryNodes = root.findall('country')
  if root is not None:
    for countryNode in countryNodes:
      if countryNode.find('year').text == '2012':
        print countryNode.find('gdppc').text

8、移除节点

def delNode(tree, nodeName):
  nodeName = nodeName.strip()
  if tree is not None:
    root = tree.getroot()
    findNode = root.find(nodeName)
    if findNode is not None and findNode.tag == nodeName:
      root.remove(findNode)
  tree.write('removeNode.xml') # 移除节点后新的xml

9、xml样例(xmlDemo.xml)

<?xml version="1.0"?>
<data>
  <country name="Liechtenstein">
    <rank>1</rank>
    <year>2008</year>
    <gdppc>141100</gdppc>
    <neighbor name="Austria" direction="E"/>
    <neighbor name="Switzerland" direction="W"/>
  </country>
  <country name="Singapore">
    <rank>4</rank>
    <year>2011</year>
    <gdppc>59900</gdppc>
    <neighbor name="Malaysia" direction="N">123
      <a name="a"> aaa </a>
    </neighbor>
  </country>
  <country name="Singapore">
    <rank>68</rank>
    <year>2012</year>
    <gdppc>13600</gdppc>
    <neighbor name="Costa Rica" direction="W"/>
    <neighbor name="Colombia" direction="E">456
      <b name="b"> bbb </b>
    </neighbor>
  </country>
  <city>789</city>
</data>

以上就是Python 解析xml文件的示例的详细内容,更多关于Python 解析xml的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
python编程实现希尔排序
Apr 13 Python
Python+Socket实现基于TCP协议的客户与服务端中文自动回复聊天功能示例
Aug 31 Python
完美解决Python 2.7不能正常使用pip install的问题
Jun 12 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
python实现多进程通信实例分析
Sep 01 Python
pytorch中的transforms模块实例详解
Dec 31 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 Python
python列表返回重复数据的下标
Feb 10 Python
基于打开pycharm有带图片md文件卡死问题的解决
Apr 24 Python
Java多线程实现四种方式原理详解
Jun 02 Python
Python第三方包PrettyTable安装及用法解析
Jul 08 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
Python 字典一个键对应多个值的方法
Sep 29 #Python
python 获取字典特定值对应的键的实现
Sep 29 #Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 #Python
Python爬取微信小程序通用方法代码实例详解
Sep 29 #Python
详解如何修改python中字典的键和值
Sep 29 #Python
提高python代码运行效率的一些建议
Sep 29 #Python
Python爬取微信小程序Charles实现过程图解
Sep 29 #Python
You might like
让你的PHP同时支持GIF、png、JPEG
2006/10/09 PHP
WordPress自定义时间显示格式
2015/03/27 PHP
关于event.cancelBubble和event.stopPropagation()的区别介绍
2011/12/11 Javascript
Javascript验证用户输入URL地址是否为空及格式是否正确
2014/10/09 Javascript
JQuery select(下拉框)操作方法汇总
2015/04/15 Javascript
jQuery实现的点赞随机数字显示动画效果(附在线演示与demo源码下载)
2015/12/31 Javascript
js获取浏览器高度 窗口高度 元素尺寸 偏移属性的方法
2016/11/21 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
详解如何解决vue开发请求数据跨域的问题(基于浏览器的配置解决)
2018/11/12 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
ES6基础之字符串和函数的拓展详解
2019/08/22 Javascript
ES6学习笔记之字符串、数组、对象、函数新增知识点实例分析
2020/01/22 Javascript
Vue 中使用 typescript的方法详解
2020/02/17 Javascript
javascript利用canvas实现鼠标拖拽功能
2020/07/23 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
[51:06]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS Liquid
2018/03/30 DOTA
Python的Django REST框架中的序列化及请求和返回
2016/04/11 Python
实例讲解Python中global语句下全局变量的值的修改
2016/06/16 Python
win10系统中安装scrapy-1.1
2016/07/03 Python
Python unittest单元测试框架总结
2018/09/08 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python 动态迁移solr数据过程解析
2019/09/04 Python
基于python的selenium两种文件上传操作实现详解
2019/09/19 Python
tensorflow自定义激活函数实例
2020/02/04 Python
Python定时任务APScheduler原理及实例解析
2020/05/30 Python
canvas画图被放大且模糊的解决方法
2020/08/11 HTML / CSS
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
客户服务经理岗位职责
2014/01/29 职场文书
预备党员政审材料
2014/02/04 职场文书
党支部书记岗位责任制
2014/02/11 职场文书
初中信息技术教学反思
2016/02/16 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
浅谈JavaScript作用域
2021/12/06 Javascript
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
2022/04/09 Javascript
Python 统计序列中元素的出现频度
2022/04/26 Python
详解ZABBIX监控ESXI主机的问题
2022/06/21 Servers