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中字典的基础知识归纳小结
Aug 19 Python
Tensorflow之构建自己的图片数据集TFrecords的方法
Feb 07 Python
python OpenCV学习笔记直方图反向投影的实现
Feb 07 Python
python3.6使用pymysql连接Mysql数据库
May 25 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
python elasticsearch环境搭建详解
Sep 02 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
Python os模块常用方法和属性总结
Feb 20 Python
Python爬取365好书中小说代码实例
Feb 28 Python
解决c++调用python中文乱码问题
Jul 29 Python
python 实时调取摄像头的示例代码
Nov 25 Python
Python OpenCV 彩色与灰度图像的转换实现
Jun 05 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的5个入手程序
2006/11/23 PHP
PHP常用开发函数解析之数组篇[未完结]
2012/07/30 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
2018/04/21 PHP
php连接mysql数据库最简单的实现方法
2019/09/24 PHP
PHP反射基础知识回顾
2020/09/10 PHP
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
原生javascript实现拖动元素示例代码
2014/09/01 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
jQuery  ready方法实现原理详解
2016/10/19 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
arcgis for js栅格图层叠加(Raster Layer)问题
2017/11/22 Javascript
基于Vue的SPA动态修改页面title的方法(推荐)
2018/01/02 Javascript
详解Vue Elementui中的Tag与页面其它元素相互交互的两三事
2018/09/25 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
Selenium鼠标与键盘事件常用操作方法示例
2018/08/13 Python
Python中staticmethod和classmethod的作用与区别
2018/10/11 Python
python代码编写计算器小程序
2020/03/30 Python
解决Python安装cryptography报错问题
2020/09/03 Python
如何在scrapy中集成selenium爬取网页的方法
2020/11/18 Python
高中的自我鉴定
2013/12/16 职场文书
本科毕业生应聘自荐信范文
2014/06/26 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
特岗教师个人总结
2015/02/10 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
VUE使用draggable实现组件拖拽
2022/04/06 Vue.js
深入理解pytorch库的dockerfile
2022/06/10 Python