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实现通过代理服务器访问远程url的方法
Apr 29 Python
Python从MP3文件获取id3的方法
Jun 15 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
Aug 07 Python
浅谈Python类里的__init__方法函数,Python类的构造函数
Dec 10 Python
Python numpy生成矩阵、串联矩阵代码分享
Dec 04 Python
使用python生成杨辉三角形的示例代码
Aug 29 Python
使用python模拟命令行终端的示例
Aug 13 Python
pytorch中使用cuda扩展的实现示例
Feb 12 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
Python return语句如何实现结果返回调用
Oct 15 Python
如何用Django处理gzip数据流
Jan 29 Python
分享Python获取本机IP地址的几种方法
Mar 17 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定界符
2014/06/19 PHP
PHP中的类型约束介绍
2015/05/11 PHP
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
JavaScript 5 新增 Array 方法实现介绍
2012/02/06 Javascript
JQuery onload、ready概念介绍及使用方法
2013/04/27 Javascript
Jquery自定义button按钮的几种方法
2014/06/11 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
js对象浅拷贝和深拷贝详解
2016/09/05 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
2016/11/18 Javascript
AngularJS中的JSONP实例解析
2016/12/01 Javascript
浅析vue component 组件使用
2017/03/06 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
ajax+node+request爬取网络图片的实例(宅男福利)
2017/08/28 Javascript
Vue一个案例引发的递归组件的使用详解
2018/11/15 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
2020/12/20 Javascript
Python中处理字符串之endswith()方法的使用简介
2015/05/18 Python
bpython 功能强大的Python shell
2016/02/16 Python
python决策树之C4.5算法详解
2017/12/20 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
Python-Tkinter Text输入内容在界面显示的实例
2019/07/12 Python
python openpyxl使用方法详解
2019/07/18 Python
Django的性能优化实现解析
2019/07/30 Python
学习python需要有编程基础吗
2020/06/02 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
旷课检讨书3000字
2014/02/04 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
金融管理专业求职信
2014/07/10 职场文书
办理信用卡收入证明范例
2014/09/13 职场文书
青年文明号申报材料
2014/12/23 职场文书
2015年助理政工师工作总结
2015/05/26 职场文书
余世维讲座观后感
2015/06/11 职场文书
Golang全局变量加锁的问题解决
2021/05/08 Golang
JavaScript模拟实现网易云轮播效果
2022/04/04 Javascript
介绍一下28个JS常用数组方法
2022/05/06 Javascript