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中非常实用的一些功能和函数分享
Feb 14 Python
Python for Informatics 第11章之正则表达式(四)
Apr 21 Python
Python3学习urllib的使用方法示例
Nov 29 Python
python实现飞机大战微信小游戏
Mar 21 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
pycharm 安装JPype的教程
Aug 08 Python
python+Django实现防止SQL注入的办法
Oct 31 Python
Python3的unicode编码转换成中文的问题及解决方案
Dec 10 Python
python实现图片横向和纵向拼接
Mar 05 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Anaconda详细安装步骤图文教程
Nov 12 Python
七个非常实用的Python工具包总结
Jun 15 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 操作excel文件的方法小结
2009/12/31 PHP
php漏洞之跨网站请求伪造与防止伪造方法
2013/08/15 PHP
PHP字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
Laravel 微信小程序后端实现用户登录的示例代码
2019/11/26 PHP
js判断运行jsp页面的浏览器类型以及版本示例
2013/10/30 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
js和jquery设置disabled属性为true使按钮失效
2014/08/07 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
jQuery中JSONP的两种实现方式详解
2016/09/26 Javascript
通过Ajax使用FormData对象无刷新上传文件方法
2016/12/08 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
js中比较两个对象是否相同的方法示例
2019/09/02 Javascript
JavaScript 函数用法详解【函数定义、参数、绑定、作用域、闭包等】
2020/05/12 Javascript
vue接通后端api以及部署到服务器操作
2020/08/13 Javascript
JavaScript 实现拖拽效果组件功能(兼容移动端)
2020/11/11 Javascript
Python 字符串中的字符倒转
2008/09/06 Python
python使用心得之获得github代码库列表
2014/06/25 Python
python异常触发及自定义异常类解析
2019/08/06 Python
python字符串的拼接方法总结
2019/11/18 Python
python中有关时间日期格式转换问题
2019/12/25 Python
Python tkinter三种布局实例详解
2020/01/06 Python
Django 用户登陆访问限制实例 @login_required
2020/05/13 Python
在Mac中配置Python虚拟环境过程解析
2020/06/22 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
特步官方商城:Xtep
2017/03/21 全球购物
装修五一活动策划案
2014/01/23 职场文书
理财投资建议书
2014/03/12 职场文书
查摆问题整改措施范文
2014/10/11 职场文书
劳模事迹材料范文
2014/12/24 职场文书