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字符串替换的2种方法
Nov 30 Python
Python递归遍历列表及输出的实现方法
May 19 Python
详解Python中的Descriptor描述符类
Jun 14 Python
Python入门_浅谈逻辑判断与运算符
May 16 Python
浅谈Django的缓存机制
Aug 23 Python
Python实现二叉搜索树BST的方法示例
Jul 30 Python
python下载库的步骤方法
Oct 12 Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 Python
python使用布隆过滤器的实现示例
Aug 20 Python
python工具快速为音视频自动生成字幕(使用说明)
Jan 27 Python
如何利用Matlab制作一款真正的拼图小游戏
May 11 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
详解如何在云服务器上部署Laravel
2017/06/30 PHP
基于jquery的不规则矩形的排列实现代码
2012/04/16 Javascript
js中的referrer返回上一页使用介绍
2013/09/26 Javascript
JavaScript中“过于”犀利地for/in循环使用示例
2013/10/22 Javascript
鼠标滚轮改变图片大小的示例代码
2013/11/20 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
Bootstrap 附加导航(Affix)插件实例详解
2016/06/01 Javascript
微信公众号支付H5调用支付解析
2016/11/04 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
Angular2环境搭建具体操作步骤(推荐)
2017/08/04 Javascript
javascript实现异形滚动轮播
2019/11/28 Javascript
深入理解redux之compose的具体应用
2020/01/12 Javascript
VUE实现自身整体组件销毁的示例代码
2020/01/13 Javascript
jQuery实现评论模块
2020/08/19 jQuery
如何手写简易的 Vue Router
2020/10/10 Javascript
理解Python中的With语句
2015/02/02 Python
Python3 处理JSON的实例详解
2017/10/29 Python
Python实现可获取网易页面所有文本信息的网易网络爬虫功能示例
2018/01/15 Python
对Python 语音识别框架详解
2018/12/24 Python
python 实现字符串下标的输出功能
2020/02/13 Python
python 读取二进制 显示图片案例
2020/04/24 Python
使用TensorBoard进行超参数优化的实现
2020/07/06 Python
python利用opencv保存、播放视频
2020/11/02 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
美国著名的家居用品购物网站:Bed Bath & Beyond
2018/01/05 全球购物
享受加州生活方式的时尚舒适:XCVI
2018/07/09 全球购物
党员思想汇报范文
2013/12/30 职场文书
中医临床专业自我鉴定范文
2014/01/15 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
教师求职自荐信范文
2015/03/04 职场文书
2015医院个人工作总结范文
2015/05/21 职场文书
2019年世界儿童日宣传标语
2019/11/22 职场文书
4种方法python批量修改替换列表中元素
2022/04/07 Python