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自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
Python的argparse库使用详解
Oct 09 Python
python dlib人脸识别代码实例
Apr 04 Python
python反编译学习之字节码详解
May 19 Python
pytorch 自定义卷积核进行卷积操作方式
Dec 30 Python
Tensorflow 实现释放内存
Feb 03 Python
Python sql注入 过滤字符串的非法字符实例
Apr 03 Python
Python学习之路安装pycharm的教程详解
Jun 17 Python
keras 自定义loss层+接受输入实例
Jun 28 Python
Python txt文件如何转换成字典
Nov 03 Python
python+playwright微软自动化工具的使用
Feb 02 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 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
ASP知识讲座四
2006/10/09 PHP
PHP+Mysql基于事务处理实现转账功能的方法
2015/07/08 PHP
基于Laravel实现的用户动态模块开发
2017/09/21 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
JS图片根据鼠标滚动延时加载的实例代码
2013/07/13 Javascript
js操作模态窗口及父子窗口间相互传值示例
2014/06/09 Javascript
jQuery实现跟随鼠标运动图层效果的方法
2015/02/02 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
AngularJS控制器继承自另一控制器
2016/05/09 Javascript
canvas绘制多边形
2017/02/24 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
nodeJs实现基于连接池连接mysql的方法示例
2018/02/10 NodeJs
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
React 组件转 Vue 组件的命令写法
2018/02/28 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
微信小程序Page中data数据操作和函数调用方法
2019/05/08 Javascript
JavaScript HTML DOM元素 节点操作汇总
2019/07/29 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
taro 实现购物车逻辑的实例代码
2020/06/05 Javascript
SpringBoot在yml配置文件中配置druid的操作
2020/11/16 Javascript
python通过装饰器检查函数参数数据类型的方法
2015/03/13 Python
python表格存取的方法
2018/03/07 Python
django+mysql的使用示例
2018/11/23 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
python实现文件助手中查看微信撤回消息
2019/04/29 Python
python单例模式原理与创建方法实例分析
2019/10/26 Python
tf.concat中axis的含义与使用详解
2020/02/07 Python
python扫描线填充算法详解
2020/02/19 Python
adidas美国官网:adidas US
2016/09/21 全球购物
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
店长助理岗位职责
2013/12/13 职场文书
2014年客服工作总结范文
2014/11/13 职场文书
煤矿安全生产工作总结
2015/08/13 职场文书
redis不能访问本机真实ip地址的解决方案
2021/07/07 Redis
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python