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的yield和generator
Mar 10 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)
Apr 18 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
详解Python 函数如何重载?
Apr 23 Python
Python语言进阶知识点总结
May 28 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
用python绘制樱花树
Oct 09 Python
详解anaconda安装步骤
Nov 23 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
Python中else的三种使用场景
Jun 16 Python
浅析Python中的套接字编程
Jun 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中使用Sockets 从Usenet中获取文件
2008/01/10 PHP
PHP DataGrid 实现代码
2009/08/12 PHP
php生成mysql的数据字典
2016/07/07 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
js为鼠标添加右击事件防止默认的右击菜单弹出
2013/07/29 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
详解Webpack loader 之 file-loader
2018/11/07 Javascript
Map与WeakMap类型在JavaScript中的使用详解
2020/11/18 Javascript
[01:11:46]DOTA2-DPC中国联赛 正赛 iG vs Magma BO3 第一场 2月23日
2021/03/11 DOTA
django 常用orm操作详解
2017/09/13 Python
python写入已存在的excel数据实例
2018/05/03 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Python编程中类与类的关系详解
2019/08/08 Python
图解python全局变量与局部变量相关知识
2019/11/02 Python
Flask中endpoint的理解(小结)
2019/12/11 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
有关Tensorflow梯度下降常用的优化方法分享
2020/02/04 Python
TensorBoard 计算图的查看方式
2020/02/15 Python
欧洲著名的二手奢侈品网站:Vestiaire Collective
2020/03/07 全球购物
sort命令的作用和用法
2013/08/25 面试题
经典英文广告词
2014/03/18 职场文书
地理科学专业自荐信
2014/09/01 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
教师个人教学总结
2015/02/11 职场文书
会计出纳岗位职责
2015/03/31 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
聊聊Python String型列表求最值的问题
2022/01/18 Python
postgresql中如何执行sql文件
2023/05/08 PostgreSQL