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实现的tab文件操作类分享
Nov 20 Python
Python中的列表生成式与生成器学习教程
Mar 13 Python
Python实现自动添加脚本头信息的示例代码
Sep 02 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
解决Python requests 报错方法集锦
Mar 19 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
Python3直接爬取图片URL并保存示例
Dec 18 Python
matplotlib之属性组合包(cycler)的使用
Feb 24 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
使用python求解迷宫问题的三种实现方法
Mar 17 Python
Python数据结构之队列详解
Mar 21 Python
Python 中面向接口编程
May 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中的escape函数
2013/06/29 PHP
MacOS 安装 PHP的图片裁剪扩展Tclip
2015/03/25 PHP
php中关于socket的系列函数总结
2015/05/18 PHP
php使用自定义函数实现汉字分割替换功能示例
2017/01/30 PHP
Yii框架的redis命令使用方法简单示例
2019/10/15 PHP
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
SOSO地图API使用(一)在地图上画圆实现思路与代码
2013/01/15 Javascript
常用的JavaScript模板引擎介绍
2015/02/28 Javascript
jQuery使用slideUp方法实现控制元素缓慢收起
2015/03/27 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
jQuery实现图片走马灯效果的原理分析
2016/01/16 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
angularJs中json数据转换与本地存储的实例
2018/10/08 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
NVM安装nodejs的方法实用步骤
2019/01/16 NodeJs
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
js实现轮播图效果 纯js实现图片自动切换
2020/08/09 Javascript
vue调用本地摄像头实现拍照功能
2020/08/14 Javascript
vue render函数动态加载img的src路径操作
2020/10/26 Javascript
python小白切忌乱用表达式
2020/05/29 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
完美解决TensorFlow和Keras大数据量内存溢出的问题
2020/07/03 Python
基于python实现MQTT发布订阅过程原理解析
2020/07/27 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
幼儿园教研活动总结
2014/04/30 职场文书
拔河比赛口号
2014/06/10 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
渠道运营商合作协议书范本
2014/10/06 职场文书
工作检讨书怎么写
2014/10/10 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
银行客户经理培训心得体会
2016/01/09 职场文书
MySQL日期时间函数知识汇总
2022/03/17 MySQL
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏