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中使用PDB库调试程序
Apr 05 Python
Python实现图片拼接的代码
Jul 02 Python
python输出100以内的质数与合数实例代码
Jul 08 Python
python中pika模块问题的深入探究
Oct 13 Python
Pytorch自己加载单通道图片用作数据集训练的实例
Jan 18 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
基于python实现微信好友数据分析(简单)
Feb 16 Python
Python如何使用内置库matplotlib绘制折线图
Feb 24 Python
python如何处理程序无法打开
Jun 16 Python
Python3与fastdfs分布式文件系统如何实现交互
Jun 23 Python
python基础之爬虫入门
May 10 Python
python迷宫问题深度优先遍历实例
Jun 20 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类
2006/11/27 PHP
php !function_exists("T7FC56270E7A70FA81A5935B72EACBE29"))代码解密
2011/01/07 PHP
php自动加载autoload机制示例分享
2014/02/20 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
thinkPHP5框架路由常用知识点汇总
2019/09/15 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
javascript 文档的编码问题解决
2009/03/01 Javascript
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
文本框input聚焦失焦样式实现代码
2012/10/12 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
js简单工厂模式用法实例
2015/06/30 Javascript
jQuery实现的背景动态变化导航菜单效果
2015/08/24 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
利用JS实现数字增长
2016/07/28 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
javascript实现扫雷简易版
2020/08/18 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python对多属性的重复数据去重实例
2018/04/18 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
python中的print()输出
2019/04/12 Python
基于Python打造账号共享浏览器功能
2019/05/30 Python
python的range和linspace使用详解
2019/11/27 Python
Python实现AI自动抠图实例解析
2020/03/05 Python
Python如何实现的二分查找算法
2020/05/27 Python
基于K.image_data_format() == 'channels_first' 的理解
2020/06/29 Python
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
Europcar意大利:汽车租赁
2019/07/07 全球购物
旅游管理毕业生自荐书
2014/02/02 职场文书
运动会的口号
2014/06/09 职场文书
纪检干部先进事迹材料
2014/08/23 职场文书
党员贯彻十八大精神思想汇报范文
2014/10/25 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
故意伤害人身损害赔偿协议书
2014/11/19 职场文书
公务员的复习计划书,请收下!
2019/07/15 职场文书