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如何import文件夹下的文件(实现方法)
Jan 24 Python
python中数据爬虫requests库使用方法详解
Feb 11 Python
Python实现加载及解析properties配置文件的方法
Mar 29 Python
对Python字符串中的换行符和制表符介绍
May 03 Python
Anaconda 离线安装 python 包的操作方法
Jun 11 Python
Python实现对字典分别按键(key)和值(value)进行排序的方法分析
Dec 19 Python
python命令行工具Click快速掌握
Jul 04 Python
Python画图高斯分布的示例
Jul 10 Python
Python实现一个带权无回置随机抽选函数的方法
Jul 24 Python
Python字典推导式将cookie字符串转化为字典解析
Aug 10 Python
Python单元测试与测试用例简析
Nov 09 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性能测试工具xhprof的详解
2013/06/03 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
PHP使用Redis实现防止大并发下二次写入的方法
2017/10/09 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
Laravel框架路由设置与使用示例
2018/06/12 PHP
javascript div 弹出可拖动窗口
2009/02/26 Javascript
半角全角相互转换的js函数
2009/10/16 Javascript
动态调用CSS文件的JS代码
2010/07/29 Javascript
利用CSS、JavaScript及Ajax实现高效的图片预加载
2013/10/16 Javascript
通过复制Table生成word和excel的javascript代码
2014/01/20 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
jquery图片播放浏览插件prettyPhoto使用详解
2014/12/19 Javascript
JS实现简单的键盘打字的效果
2015/04/24 Javascript
Jquery通过ajax请求NodeJS返回json数据实例
2016/11/08 NodeJs
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
Javascript中的 “&amp;” 和 “|” 详解
2017/02/02 Javascript
解决nodejs中使用http请求返回值为html时乱码的问题
2017/02/18 NodeJs
运用jQuery写的验证表单(实例讲解)
2017/07/06 jQuery
javascript帧动画(实例讲解)
2017/09/02 Javascript
深入掌握 react的 setState的工作机制
2017/09/27 Javascript
使用vue实现简单键盘的示例(支持移动端和pc端)
2017/12/25 Javascript
从0到1学习JavaScript编写贪吃蛇游戏
2020/07/28 Javascript
Python脚本实现DNSPod DNS动态解析域名
2015/02/14 Python
python实现的简单抽奖系统实例
2015/05/22 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python微医挂号网医生数据抓取
2019/01/24 Python
vscode 配置 python3开发环境的方法
2019/09/19 Python
CSS3 简写animation
2012/05/10 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
2014年征兵标语
2014/06/20 职场文书
酒店餐厅2014重阳节活动策划方案
2014/09/16 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
MySQL数据库压缩版本安装与配置详细教程
2021/05/21 MySQL
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL