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系列之教你如何根据图片生成字符画
May 23 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
Pycharm之快速定位到某行快捷键的方法
Jan 20 Python
Django 静态文件配置过程详解
Jul 23 Python
Python对接六大主流数据库(只需三步)
Jul 31 Python
Python配置文件处理的方法教程
Aug 29 Python
Python实现投影法分割图像示例(一)
Jan 17 Python
Python2与Python3的区别详解
Feb 09 Python
使用scrapy ImagesPipeline爬取图片资源的示例代码
Sep 28 Python
解决使用Pandas 读取超过65536行的Excel文件问题
Nov 10 Python
scrapy-splash简单使用详解
Feb 21 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 数组实例说明
2008/08/18 PHP
php更改目录及子目录下所有的文件后缀扩展名的代码
2010/10/12 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
javascript实现上传图片前的预览(TX的面试题)
2007/08/20 Javascript
js关闭当前页面(窗口)的几种方式总结
2013/03/05 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
Javascript连接Access数据库完整实例
2015/08/03 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(二)
2015/12/10 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
2016/06/21 Javascript
Vue实例简单方法介绍
2017/01/20 Javascript
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
vue.js在标签属性中插入变量参数的方法
2018/03/06 Javascript
自定义vue组件发布到npm的方法
2018/05/09 Javascript
详解微信小程序input标签正则初体验
2018/08/18 Javascript
如何制作一个Node命令行图像识别工具
2018/12/12 Javascript
小试SVG之新手小白入门教程
2019/01/08 Javascript
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
Python绘制股票移动均线的实例
2019/08/24 Python
Python实现对adb命令封装
2020/03/06 Python
jupyter notebook的安装与使用详解
2020/05/18 Python
MCM英国官网:奢侈皮具制品
2017/04/18 全球购物
Web Service面试题:如何搭建Axis2的开发环境
2012/06/20 面试题
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
敏捷开发的主要原则都有哪些
2015/04/26 面试题
函授本科毕业生自我鉴定
2013/10/16 职场文书
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
个性车贴标语
2014/06/24 职场文书
八项规定个人对照检查材料思想汇报
2014/09/25 职场文书
2015年话务员工作总结
2015/04/29 职场文书
人民调解协议书
2016/03/21 职场文书
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers