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 PIL模块与随机生成中文验证码
Feb 27 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
Aug 18 Python
使用python实现ANN
Dec 20 Python
Python 元类实例解析
Apr 04 Python
Python对ElasticSearch获取数据及操作
Apr 24 Python
基于sklearn实现Bagging算法(python)
Jul 11 Python
python+django+rest框架配置创建方法
Aug 31 Python
Python实现图片裁剪的两种方式(Pillow和OpenCV)
Oct 30 Python
Python+OpenCV实现实时眼动追踪的示例代码
Nov 11 Python
tensorflow实现二维平面模拟三维数据教程
Feb 11 Python
利用Tensorboard绘制网络识别准确率和loss曲线实例
Feb 15 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 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操作MySQL事务实例
2014/11/05 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
取得窗口大小 兼容所有浏览器的js代码
2011/08/09 Javascript
Javascript图像处理—平滑处理实现原理
2012/12/28 Javascript
JQuery入门——事件切换之toggle()方法应用介绍
2013/02/05 Javascript
window.onload追加函数使用示例
2014/03/03 Javascript
jQuery动画特效实例教程
2014/08/29 Javascript
js父页面与子页面不同时显示的方法
2014/10/16 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
JavaScript中的Function函数
2015/08/27 Javascript
jQuery中attr()与prop()函数用法实例详解(附用法区别)
2015/12/29 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
微信小程序 高德地图SDK详解及简单实例(源码下载)
2017/01/11 Javascript
原生js实现无缝轮播图效果
2017/01/11 Javascript
浅析vue数据绑定
2017/01/17 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
详解vue-cli3使用
2018/08/14 Javascript
[01:47]2018年度DOTA2最佳教练-完美盛典
2018/12/16 DOTA
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
Sanic框架应用部署方法详解
2018/07/18 Python
使用 Python 处理 JSON 格式的数据
2019/07/22 Python
python被修饰的函数消失问题解决(基于wraps函数)
2019/11/04 Python
python中return的返回和执行实例
2019/12/24 Python
Pytorch之view及view_as使用详解
2019/12/31 Python
python实现对变位词的判断方法
2020/04/05 Python
python实现文字版扫雷
2020/04/24 Python
ansible-playbook实现自动部署KVM及安装python3的详细教程
2020/05/11 Python
菲律宾领先的在线时尚商店:Zalora菲律宾
2018/02/08 全球购物
公司年会抽奖活动主持词
2014/03/31 职场文书
高一学生评语大全
2014/04/25 职场文书
篮球友谊赛通讯稿
2014/10/10 职场文书
2014年管理人员工作总结
2014/12/01 职场文书
元旦晚会开场白
2015/05/29 职场文书
通过feDisplacementMap和feImage实现水波特效
2022/04/24 HTML / CSS