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之再深点,更懂list
Sep 20 Python
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 Python
python实现神经网络感知器算法
Dec 20 Python
Django添加feeds功能的示例
Aug 07 Python
使用python进行拆分大文件的方法
Dec 10 Python
Python实现12306火车票抢票系统
Jul 04 Python
Python_查看sqlite3表结构,查询语句的示例代码
Jul 17 Python
python删除列表元素的三种方法(remove,pop,del)
Jul 22 Python
numpy按列连接两个维数不同的数组方式
Dec 06 Python
pytorch中tensor张量数据类型的转化方式
Dec 31 Python
对Matlab中共轭、转置和共轭装置的区别说明
May 11 Python
python爬取2021猫眼票房字体加密实例
Feb 19 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引用的调用方法分析
2016/04/25 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
PHP children()函数讲解
2019/02/03 PHP
可输入的下拉框
2006/06/19 Javascript
[IE&FireFox兼容]JS对select操作
2007/01/07 Javascript
jquery 面包屑导航 具体实现
2013/06/05 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
JS延时器提示框的应用实例代码解析
2016/04/27 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
详解AngularJS跨页面传值(ui-router)
2017/08/23 Javascript
jQuery实现html双向绑定功能示例
2017/10/09 jQuery
Webpack实战加载SVG的方法
2017/12/26 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
fastadmin中调用js的方法
2019/05/14 Javascript
浅入深出Vue之组件使用
2019/07/11 Javascript
Vue.js实现tab切换效果
2019/07/24 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
[46:57]EG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python单元测试框架unittest使用方法讲解
2015/04/13 Python
Python生成不重复随机值的方法
2015/05/11 Python
python实现二叉查找树实例代码
2018/02/08 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
Python 生成一个从0到n个数字的列表4种方法小结
2019/11/28 Python
python为Django项目上的每个应用程序创建不同的自定义404页面(最佳答案)
2020/03/09 Python
python实现sm2和sm4国密(国家商用密码)算法的示例
2020/09/26 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
Pop In A Box英国:Funko POP搪胶公仔
2019/05/27 全球购物
幼儿园实习生辞职信
2014/01/20 职场文书
数控个人求职信范文
2014/02/03 职场文书
村庄环境整治方案
2014/05/15 职场文书
团干部培训方案
2014/06/03 职场文书