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获得两个数组交集、并集、差集的方法
Mar 27 Python
python解决汉字编码问题:Unicode Decode Error
Jan 19 Python
Python实现完整的事务操作示例
Jun 20 Python
Python数据结构与算法之图的基本实现及迭代器实例详解
Dec 12 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
python如何读写csv数据
Mar 21 Python
python list是否包含另一个list所有元素的实例
May 04 Python
python爬取网易云音乐评论
Nov 16 Python
解决pycharm运行出错,代码正确结果不显示的问题
Nov 30 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
python上下文管理的使用场景实例讲解
Mar 03 Python
Python基础之Socket通信原理
Apr 22 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
PHP4 与 MySQL 数据库操作函数详解
2006/12/06 PHP
PHP 将逗号、空格、回车分隔的字符串转换为数组的函数
2012/06/07 PHP
mysqli_set_charset和SET NAMES使用抉择及优劣分析
2013/01/13 PHP
php数组去重实例及分析
2013/11/26 PHP
php 魔术方法详解
2014/11/11 PHP
ThinkPHP表单数据智能写入create方法实例分析
2015/09/27 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
JavaScript中的私有成员
2006/09/18 Javascript
[HTML/CSS/Javascript]WWTJS
2007/09/25 Javascript
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
JavaScript中的this实例分析
2011/04/28 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
2015/11/29 Javascript
jQuery日历插件datepicker用法详解
2016/03/03 Javascript
微信小程序 Video API实例详解
2016/10/02 Javascript
ES6新特性之Object的变化分析
2017/03/31 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
[46:23]OG vs EG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
Python实现繁体中文与简体中文相互转换的方法示例
2018/12/18 Python
kafka-python批量发送数据的实例
2018/12/27 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python 实现从高分辨图像上抠取图像块
2020/01/02 Python
英国最大的香水商店:The Fragrance Shop
2018/07/06 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
面试后的英文感谢信
2014/02/01 职场文书
高速铁道技术专业求职信
2014/08/09 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
同学毕业留言寄语
2015/02/27 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书