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读写Excel文件的实例
Nov 01 Python
Python的函数嵌套的使用方法
Jan 24 Python
python logging 日志轮转文件不删除问题的解决方法
Aug 02 Python
Python利用Django如何写restful api接口详解
Jun 08 Python
OPENCV去除小连通区域,去除孔洞的实例讲解
Jun 21 Python
基于Python3.6+splinter实现自动抢火车票
Sep 25 Python
python 提取tuple类型值中json格式的key值方法
Dec 31 Python
python实现移位加密和解密
Mar 22 Python
Scrapy-Redis结合POST请求获取数据的方法示例
May 07 Python
python3 enum模块的应用实例详解
Aug 12 Python
python 实现矩阵按对角线打印
Nov 29 Python
python如何实现读取并显示图片(不需要图形界面)
Jul 08 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 adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
jQuery EasyUI 开源插件套装 完全替代ExtJS
2010/03/24 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
关于javascript中dataset的问题小结
2015/11/16 Javascript
jQuery使用中可能被XSS攻击的一些危险环节提醒
2016/05/24 Javascript
js学习阶段总结(必看篇)
2016/06/16 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
用v-html解决Vue.js渲染中html标签不被解析的问题
2016/12/14 Javascript
通过jsonp获取json数据实现AJAX跨域请求
2017/01/22 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
让微信小程序支持ES6中Promise特性的方法详解
2017/06/13 Javascript
去掉vue 中的代码规范检测两种方法(Eslint验证)
2018/03/21 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
vue keep-alive请求数据的方法示例
2018/05/16 Javascript
浅谈vue父子组件怎么传值
2018/07/21 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
Vue动态生成表格的行和列
2019/07/18 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
Python自定义进程池实例分析【生产者、消费者模型问题】
2016/09/19 Python
python如何为被装饰的函数保留元数据
2018/03/21 Python
Python单元测试实例详解
2018/05/25 Python
python查看模块,对象的函数方法
2018/10/16 Python
python分数表示方式和写法
2019/06/26 Python
python中如何打包用户自定义模块
2020/09/23 Python
Pytorch如何切换 cpu和gpu的使用详解
2021/03/01 Python
移动端适配 使px自动转换rem
2019/08/26 HTML / CSS
Tommy Hilfiger澳洲官网:美国高端休闲领导品牌
2020/12/16 全球购物
会计实习自我鉴定
2013/12/04 职场文书
《小山羊和小灰兔》教学反思
2014/02/19 职场文书
公司领导班子对照检查材料
2014/09/24 职场文书
行政申诉状范文
2015/05/20 职场文书
2015年试用期工作总结范文
2015/05/28 职场文书
本科毕业论文答辩稿
2015/06/23 职场文书
高中运动会前导词
2015/07/20 职场文书