python中使用ElementTree 操作XML
概述
参考elementTree的官方文档,ET 模块可以归纳为三个部分:ElementTree类,Element类以及一些操作 XML 的函数。 XML是一种固有的分层数据格式,表示它的最自然的方式是使用树。 ET
为此目的有两个类 - ElementTree
将整个XML文档表示为树,并 Element
表示此树中的单个节点。与整个文档的交互(读取和写入文件)通常在ElementTree
关卡上完成。与单个XML元素及其子元素的交互在该Element
级别上完成。
XML中结点结构一般为:<tag attrib>text</tag>的形式
<tag attrib="attrib">text</tag>
1.解析XML文件
ET模块支持从一个XML文件构造成一个ElementTree对象,以下以官方文档中给出的country.xml为例进行接收
<?xml version="1.0" encoding="utf-8"?>
<data><country1 name="Liechtenstein"><rank>1</rank><year>2008</year><gdppc>141100</gdppc><neighbor name="Austria" direction="E"/><neighbor name="Switzerland" direction="W"/></country1><country2 name="中国"><rank>68</rank><year>2011</year><gdppc>13600</gdppc><neighbor name="赵三" direction="西边"/><neighbor name="李四" direction="东北"/></country2>
</data>
使用ET模块中的parse()函数构造一个ElementTree对象,如下所示:
#-*-encoding:utf-8-*-import xml.etree.ElementTree as ET# 获取 XML 文档对象 ElementTree
tree = ET.parse('coutry.xml')# 获取 XML 文档对象的根结点 Element
root = tree.getroot()
# 打印根结点的名称
print "tag:",root.tag
2.XML中查找结点信息
XML中可以使用三种方式进行查找,分别是find(),findall(),iter()的方式,下面通过实例进行介绍
1.find()方法和findall()
如果使用Element.findall()
或者Element.find()
方法,则只会从结点的直接子结点中查找,并不会递归查找。
for country in root.findall('country1'):rank = country.find('rank').textname = country.get('name')print name, rank
关于find()和findall()方法,可以参考一篇窃以为不错的博客。
2.iter()
鉴于find()和findall()的缺点,自己较喜欢的使用iter()方法。
import xml.etree.ElementTree as ET# 获取 XML 文档对象 ElementTree
tree = ET.parse('coutry.xml')# 获取 XML 文档对象的根结点 Element
root = tree.getroot()
#使用iter查找并打印结点信息
for index in root.iter("year2"):print "index.tag",index.tag
3.修改更新结点
结点的更新涉及到属性更新,值的更新。如果更新属性使用,修改Element.attrib进行修改;如果更新值使用Element.text更新,注意这里的值的更新,如果是数字类型,变化的时候需要需要先转换成int,再转换成str类型进行赋值。那更新后一般需要写入原来的文件中,此时需要使用ElementTree.write()方法写入到XML文件中,如下所示:
#-*- coding:utf-8 -*-import xml.etree.ElementTree as ET# 获取 XML 文档对象 ElementTree
tree = ET.parse('coutry.xml')# 获取 XML 文档对象的根结点 Element
root = tree.getroot()for index in root.iter("year2"):print "index.text", index.textindex.text = str(int(index.text) + 1)print "index.text", index.texttree.write("countryResult.xml",encoding="UTF-8")
注意:这里编码格式要使用“UTF-8”,如果使用的是"utf-8"保存后出现没有头部
<?xml version="1.0" encoding="utf-8"?>
的情况
python中使用ElementTree 操作XML相关推荐
- python 中使用ElementTree操作XML
概述 对比其他 Python 处理 XML 的方案,xml.etree.ElementTree 模块(下文我们以 ET 来表示)相对来说比较简单,接口也较友好. 官方文档 里面对 ET 模块进行了较为 ...
- Python中使用ElementTree解析xml
在Python中,ElementTree是我们常用的一个解析XML的模块 1.导入ElementTree模块 from xml.etree import ElementTree as ET 2.初始化 ...
- python解析xml文件elementtree_在python中使用ElementTree解析xml文件
ElementTree是python自带的处理xml格式文件的模块,位于libxmletreeElementTree.py.这个模块有两个基本概念:Element和ElementTree. 表示整个树 ...
- python解析xml文件elementtree_Python中使用ElementTree解析XML示例
[XML基本概念介绍] XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. 概念一: 复制代码 代码如下: # foo元素的起始标签 ...
- python elementtree乱码_Python中使用ElementTree解析xml
在Python中,ElementTree是我们常用的一个解析XML的模块 1.导入ElementTree模块 from xml.etree import ElementTree as ET 2.初始化 ...
- 面试官问我:如何在 Python 中解析和修改 XML
摘要:我们经常需要解析用不同语言编写的数据.Python提供了许多库来解析或拆分用其他语言编写的数据.在此 Python XML 解析器教程中,您将学习如何使用 Python 解析 XML. 本文分享 ...
- python中的日志操作和发送邮件
1.python中的日志操作 安装log模块:pip install nnlog 参数:my_log = nnlog.Logger('server_log.log',level='debug',bac ...
- python中二进制文件_Python学习基础篇 -6: Python中的文件操作
前言:本专栏以Python为主题,并尽可能保持每星期两到三更,直到将Python的基础知识浅析和讲解完毕,同时,有一定基础的同学可以移步 Python实战专栏 . 文件有有什么用 文件可以看作一个仓库 ...
- Python中的字符串操作总结(Python3.6.1版本)
Python中的字符串操作(Python3.6.1版本) (1)切片操作: str1="hello world!" str1[1:3] <=> 'el'(左闭右开:即是 ...
最新文章
- 驾驶员行为监控系统:需要它来管理车队
- .NET Compact Framework下的蓝牙开发
- TCP/IP详解--第九章
- iptables_默认规则
- 索尼笔记本bios如何设置VT-x/AMD-V兼容
- pivotal_Spring Data Pivotal Gemfire教程
- 在InternetExplorer.Application中显示本地图片
- MySQL查询表的所有列名,用逗号拼接
- 手机屏幕宽高像素计算_国内手机厂商纷纷支持,三星传感器终成正果!索尼还能雄起吗?...
- [FFmpeg] 绘制矩形框
- python爬虫-Python 爬虫介绍
- 【OpenCV入门指南】第八篇 灰度直方图
- 指向函数的指针和block
- 多元函数法曲率和主曲率的几何解释
- 首次登录强制修改密码
- 技术人员谈管理之帕累托法则(80/20法则)
- C# 在获得鼠标点击事件时,如何判断Control键,Shift键被按下
- yolov5_trt_web检索衣服图案
- Netbeans设置语言为英文
- 使用线性SVM实现对垃圾邮件分类