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函数返回多个值的示例方法
Dec 04 Python
Python实现的一个简单LRU cache
Sep 26 Python
python从入门到精通(DAY 3)
Dec 20 Python
深入浅析Python中join 和 split详解(推荐)
Jun 30 Python
python通过pip更新所有已安装的包实现方法
May 19 Python
对python抓取需要登录网站数据的方法详解
May 21 Python
使用Scrapy爬取动态数据
Oct 21 Python
用python3 urllib破解有道翻译反爬虫机制详解
Aug 14 Python
python自动结束mysql慢查询会话的实例代码
Oct 27 Python
python自动生成model文件过程详解
Nov 02 Python
Python for循环及基础用法详解
Nov 08 Python
基于PyTorch实现一个简单的CNN图像分类器
May 29 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的输出:缓存并压缩动态页面
2013/06/11 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
PHP JSON格式的中文显示问题解决方法
2015/04/09 PHP
高质量PHP代码的50个实用技巧必备(上)
2016/01/22 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
javascript获取隐藏dom的宽高 具体实现
2013/07/14 Javascript
js获取客户端外网ip的简单实例
2013/11/21 Javascript
基于jquery实现的文字向上跑动类似跑马灯的效果
2014/06/17 Javascript
基于jQuery的图片不完全按比例自动缩小
2014/07/11 Javascript
javascript框架设计之类工厂
2015/06/23 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
jQuery实现点击某个div打开层,点击其他div关闭层实例分析(阻止冒泡)
2016/11/18 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
Vue2.0用 watch 观察 prop 变化(不触发)
2017/09/08 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
2017/10/17 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
利用vue+elementUI实现部分引入组件的方法详解
2017/11/22 Javascript
vue中使用vue-cli接入融云实现即时通信
2019/04/19 Javascript
使用apidoc管理RESTful风格Flask项目接口文档方法
2018/02/07 Python
numpy基础教程之np.linalg
2019/02/12 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
利用 Flask 动态展示 Pyecharts 图表数据方法小结
2019/09/04 Python
Tensorflow中的dropout的使用方法
2020/03/13 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
2013/06/09 HTML / CSS
html5实现输入框fixed定位在屏幕最底部兼容性
2020/07/03 HTML / CSS
专科应届生求职信
2013/11/24 职场文书
社区工作者先进事迹
2014/01/18 职场文书
上课玩手机检讨书
2014/02/08 职场文书
党员实事承诺书
2014/03/26 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
科技之星事迹材料
2014/06/02 职场文书
食品安全宣传标语
2014/06/07 职场文书