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传递参数方式小结
Apr 17 Python
Python heapq使用详解及实例代码
Jan 25 Python
详解Python3 中hasattr()、getattr()、setattr()、delattr()函数及示例代码数
Apr 18 Python
python3.x实现发送邮件功能
May 22 Python
pandas 小数位数 精度的处理方法
Jun 09 Python
解决python3中cv2读取中文路径的问题
Dec 05 Python
详解Django中CBV(Class Base Views)模型源码分析
Feb 25 Python
Python 序列化和反序列化库 MarshMallow 的用法实例代码
Feb 25 Python
python 实现两个线程交替执行
May 02 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
浅谈pytorch中stack和cat的及to_tensor的坑
May 20 Python
Python实现8种常用抽样方法
Jun 27 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用strstr()函数阻止垃圾评论(通过判断a标记)
2013/09/28 PHP
开启PHP Static 关键字之旅模式
2015/11/13 PHP
页面版文本框智能提示JS代码
2009/11/20 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
2011/10/14 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
jquery获取复选框被选中的值
2014/04/10 Javascript
Egret引擎开发指南之视觉编程
2014/09/03 Javascript
JavaScript中的对象的extensible属性介绍
2014/12/30 Javascript
基于CSS3和jQuery实现跟随鼠标方位的Hover特效
2016/07/25 Javascript
Backbone View 之间通信的三种方式
2016/08/09 Javascript
微信小程序中多个页面传参通信的学习与实践
2017/05/05 Javascript
超级简易的JS计算器实例讲解(实现加减乘除)
2017/08/08 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
python和pyqt实现360的CLable控件
2014/02/21 Python
python静态方法实例
2015/01/14 Python
解决Scrapy安装错误:Microsoft Visual C++ 14.0 is required...
2017/10/01 Python
python使用suds调用webservice接口的方法
2019/01/03 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
2019/01/29 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
浅谈python3中input输入的使用
2019/08/02 Python
pd.DataFrame统计各列数值多少的实例
2019/12/05 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
python 命名规范知识点汇总
2020/02/14 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
使用html5实现表格实现标题合并的实例代码
2019/05/13 HTML / CSS
捷克时尚网上商店:OTTO
2018/03/15 全球购物
幼儿园老师辞职信
2014/01/20 职场文书
省级青年文明号申报材料
2014/05/23 职场文书
销售行政专员岗位职责
2014/06/10 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
Jsonp劫持学习
2021/04/01 PHP
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android