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上基于Markov链生成伪随机文本的教程
Apr 17 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
Jun 19 Python
python实现俄罗斯方块游戏
Mar 25 Python
Python中矩阵创建和矩阵运算方法
Aug 04 Python
python如何生成各种随机分布图
Aug 27 Python
python 检查数据中是否有缺失值,删除缺失值的方式
Dec 02 Python
pytorch的batch normalize使用详解
Jan 15 Python
Python实现aes加密解密多种方法解析
May 15 Python
python实现批处理文件
Jul 28 Python
linux系统下pip升级报错的解决方法
Jan 31 Python
PyQt5结合QtDesigner实现文本框读写操作
Jun 11 Python
Python实现列表拼接和去重的三种方式
Jul 02 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 socket方式提交的post详解
2008/07/19 PHP
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
Laravel 5.4因特殊字段太长导致migrations报错的解决
2017/10/22 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
javascript中检测变量的类型的代码
2010/12/28 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
jQuery实现多按钮单击变色
2014/11/27 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
原生JS简单实现ajax的方法示例
2016/11/29 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
使用Vue+Django+Ant Design做一个留言评论模块的示例代码
2020/06/01 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
python 装饰器功能以及函数参数使用介绍
2012/01/27 Python
使用Python的Scrapy框架编写web爬虫的简单示例
2015/04/17 Python
python学习基础之循环import及import过程
2018/04/22 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
2019/06/19 Python
详解python中的生成器、迭代器、闭包、装饰器
2019/08/22 Python
python 求10个数的平均数实例
2019/12/16 Python
Python序列类型的打包和解包实例
2019/12/21 Python
找Python安装目录,设置环境路径以及在命令行运行python脚本实例
2020/03/09 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
CSS3中的5个有趣的新技术
2009/04/02 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
菲律宾酒店预订网站:Hotels.com菲律宾
2017/07/12 全球购物
简历中自我评价分享
2013/10/09 职场文书
社区七一党员活动方案
2014/01/25 职场文书
服务员岗位责任制
2014/02/11 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
2016年五四青年节校园广播稿
2015/12/17 职场文书
运动会口号霸气押韵
2015/12/24 职场文书
Mysql基础之常见函数
2021/04/22 MySQL