Python常用内置模块之xml模块(详解)


Posted in Python onMay 23, 2017

xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。从结构上,很像HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传输和存储数据,其焦点是数据的内容。那么Python是如何处理XML语言文件的呢?下面一起来看看Python常用内置模块之xml模块吧。

本文主要学习的ElementTree是python的XML处理模块,它提供了一个轻量级的对象模型。在使用ElementTree模块时,需要import xml.etree.ElementTree的操作。ElementTree表示整个XML节点树,而Element表示节点数中的一个单独的节点。

构建XML文件

ElementTree(tag),其中tag表示根节点,初始化一个ElementTree对象。

Element(tag, attrib={}, **extra)函数用来构造XML的一个根节点,其中tag表示根节点的名称,attrib是一个可选项,表示节点的属性。

SubElement(parent, tag, attrib={}, **extra)用来构造一个已经存在的节点的子节点 Element.text和SubElement.text表示element对象的额外的内容属性,Element.tag和Element.attrib分别表示element对象的标签和属性。

ElementTree.write(file, encoding='us-ascii', xml_declaration=None, default_namespace=None, method='xml'),函数新建一个XML文件,并且将节点数数据写入XML文件中。

下面以新建一个网站的sitemap.xml文件为例进行代码示例

#!/usr/bin/env python
# -*- coding:utf-8 -*-
from xml.etree import ElementTree as ET
def build_sitemap():
  urlset = ET.Element("urlset")  #设置一个根节点,标签为urlset
  url = ET.SubElement(urlset,"url")  #在根节点urlset下建立子节点
  loc = ET.SubElement(url,"loc")
  loc.text = "http://www/baidu.com"
  lastmod = ET.SubElement(url,"lastmod")
  lastmod.text = "2017-10-10"
  changefreq = ET.SubElement(url,"changefreq")
  changefreq.text = "daily"
  priority = ET.SubElement(url,"priority")
  priority.text = "1.0"
  tree = ET.ElementTree(urlset)
  tree.write("sitemap.xml")
if __name__ == '__main__':
  build_sitemap()

结果如下图所示:

Python常用内置模块之xml模块(详解)

解析和修改XML文件

ElementTree.parse(source, parser=None),将xml文件加载并返回ElementTree对象。parser是一个可选的参数,如果为空,则默认使用标准的XMLParser解析器。

ElementTree.getroot(),得到根节点。返回根节点的element对象。

Element.remove(tag),删除root下名称为tag的子节点 以下函数,ElementTree和Element的对象都包含。

find(match),得到第一个匹配match的子节点,match可以是一个标签名称或者是路径。返回个element findtext(match,default=None),得到第一个配置的match的element的内容 findall(match),得到匹配match下的所有的子节点,match可以是一个标签或者是路径,它会返回一个list,包含匹配的elements的信息 iter(tag),创建一个以当前节点为根节点的iterator。

还是以上面创建的sitemap.xml为例,对其进行一定的修改,代码示例如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
from xml.etree import ElementTree as ET
tree = ET.parse("sitemap.xml")
url = tree.find("url")
for rank in tree.iter('loc'):
  rank.text = "http://www.adminba.com"
tree.write("sitemap.xml")

以上的代码将url修改为http://www.adminba.com了。另外,节点还有set(设置节点属性)、attrib(删除节点属性)方法。

这篇Python常用内置模块之xml模块(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python关闭windows进程的方法
Apr 18 Python
Python中random模块生成随机数详解
Mar 10 Python
判断网页编码的方法python版
Aug 12 Python
python re模块findall()函数实例解析
Jan 19 Python
django限制匿名用户访问及重定向的方法实例
Feb 07 Python
Pycharm2017版本设置启动时默认自动打开项目的方法
Oct 29 Python
使用Python 统计高频字数的方法
Jan 31 Python
python按比例随机切分数据的实现
Jul 11 Python
tensorboard显示空白的解决
Feb 15 Python
基于virtualenv创建python虚拟环境过程图解
Mar 30 Python
python与js主要区别点总结
Sep 13 Python
python geopandas读取、创建shapefile文件的方法
Jun 29 Python
Python使用PyCrypto实现AES加密功能示例
May 22 #Python
django+js+ajax实现刷新页面的方法
May 22 #Python
Python正则表达式经典入门教程
May 22 #Python
Python AES加密模块用法分析
May 22 #Python
Python 安装setuptools和pip工具操作方法(必看)
May 22 #Python
对Python进行数据分析_关于Package的安装问题
May 22 #Python
详解python之配置日志的几种方式
May 22 #Python
You might like
PHP 中的批处理的实现
2007/06/14 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
C#使用PHP服务端的Web Service通信实例
2014/04/08 PHP
php格式文件打开的四种方法
2018/02/24 PHP
简明json介绍
2008/09/28 Javascript
20个实用的JavaScript技巧分享
2014/11/28 Javascript
AngularJs根据访问的页面动态加载Controller的解决方案
2015/02/04 Javascript
JavaScript控制table某列不显示的方法
2015/03/16 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
angularjs客户端实现压缩图片文件并上传实例
2015/07/06 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
Windows环境下npm install 报错: operation not permitted, rename的解决方法
2016/09/26 Javascript
基于BootStrap multiselect.js实现的下拉框联动效果
2017/07/28 Javascript
js保留两位小数方法总结
2018/01/31 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
JavaScript中的几种继承方法示例
2020/12/06 Javascript
[01:36]DOTA2完美大师赛趣味视频之与队友相处的十万个技巧
2017/11/19 DOTA
python 获取本机ip地址的两个方法
2013/02/25 Python
python实现在无须过多援引的情况下创建字典的方法
2014/09/25 Python
浅谈python对象数据的读写权限
2016/09/12 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
Django添加feeds功能的示例
2018/08/07 Python
Python连接Redis的基本配置方法
2018/09/13 Python
Python实现将多个空格换为一个空格.md的方法
2018/12/20 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
基于python框架Scrapy爬取自己的博客内容过程详解
2019/08/05 Python
解决pyPdf和pyPdf2在合并pdf时出现异常的问题
2020/04/03 Python
Dr. Martens马汀博士法国官网:马丁靴鼻祖
2020/01/15 全球购物
工商治理实习生的自我评价
2014/01/15 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
2014年科研工作总结
2014/12/03 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python
十大冰系宝可梦排名,颜值最高的阿罗拉九尾,第三使用率第一
2022/03/18 日漫