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常用模块介绍
Nov 21 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
Jun 07 Python
利用Python实现Windows定时关机功能
Mar 21 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 Python
python笔记:mysql、redis操作方法
Jun 28 Python
python3之微信文章爬虫实例讲解
Jul 12 Python
Django admin实现图书管理系统菜鸟级教程完整实例
Dec 12 Python
python opencv 简单阈值算法的实现
Aug 04 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
python标准库OS模块函数列表与实例全解
Mar 10 Python
详解scrapy内置中间件的顺序
Sep 28 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学习之PHP运算符
2006/10/09 PHP
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
ajax实现无刷新分页(php)
2010/07/18 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
PHP+redis实现添加处理投票的方法
2015/11/14 PHP
解决laravel id非自增 模型取回为0 的问题
2019/10/11 PHP
jquery 获取自定义属性(attr和prop)的实现代码
2012/06/27 Javascript
js将iframe中控件的值传到主页面控件中的实现方法
2013/03/11 Javascript
js去字符串前后空格5种实现方法及比较
2013/04/03 Javascript
JavaScript中的正则表达式简明总结
2014/04/04 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
超实用的javascript时间处理总结
2016/08/16 Javascript
javascript中Number的方法小结
2016/11/21 Javascript
详解在vue-cli项目中安装node-sass
2017/06/21 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
浅谈如何使用 webpack 优化资源
2017/10/20 Javascript
vue加载完成后的回调函数方法
2018/09/07 Javascript
js 执行上下文和作用域的相关总结
2021/02/08 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
python多线程操作实例
2014/11/21 Python
pandas中Timestamp类用法详解
2017/12/11 Python
对python3标准库httpclient的使用详解
2018/12/18 Python
Pyqt5实现英文学习词典
2019/06/24 Python
在Python中COM口的调用方法
2019/07/03 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
Sarenza德国:法国最大的时尚鞋和包包网上商店
2019/06/08 全球购物
工程资料员岗位职责
2014/03/10 职场文书
高中家长寄语
2014/04/02 职场文书
三关爱志愿服务活动方案
2014/08/17 职场文书
作风转变心得体会
2014/09/02 职场文书
干部个人考察材料
2014/12/24 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
Log4j.properties配置及其使用
2021/08/02 Java/Android
Python采集股票数据并制作可视化柱状图
2022/04/04 Python