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 相关文章推荐
关于你不想知道的所有Python3 unicode特性
Nov 28 Python
详解python中的json的基本使用方法
Dec 21 Python
Flask框架响应、调度方法和蓝图操作实例分析
Jul 24 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
Python 占位符的使用方法详解
Jul 10 Python
python实现证件照换底功能
Aug 20 Python
Python 实现大整数乘法算法的示例代码
Sep 17 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python 给下载文件显示进度条和下载时间的实现
Apr 02 Python
Flask中sqlalchemy模块的实例用法
Aug 02 Python
PyQt5结合matplotlib绘图的实现示例
Sep 15 Python
Python绘制词云图之可视化神器pyecharts的方法
Feb 23 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
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
php查看session内容的函数
2008/08/27 PHP
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
php 连接mssql数据库 初学php笔记
2010/03/01 PHP
PHP合并两个数组的两种方式的异同
2012/09/14 PHP
PHP随机字符串生成代码(包括大小写字母)
2013/06/24 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
2015/07/08 PHP
Yii使用migrate命令执行sql语句的方法
2016/03/15 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
ExtJs之带图片的下拉列表框插件
2010/03/04 Javascript
JavaScript window.location对象
2014/11/14 Javascript
js实现同一页面可多次调用的图片幻灯切换效果
2015/02/28 Javascript
ionic进入多级目录后隐藏底部导航栏(tabs)的完美解决方案
2016/11/23 Javascript
js点击任意区域弹出层消失实现代码
2016/12/27 Javascript
JavaScript仿微信打飞机游戏
2020/07/05 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
react实现一个优雅的图片占位模块组件详解
2017/10/30 Javascript
用JS实现根据当前时间随机生成流水号或者订单号
2018/05/31 Javascript
微信小程序开发问题之wx.previewImage
2018/12/25 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
vue3弹出层V3Popup实例详解
2021/01/04 Vue.js
numpy数组拼接简单示例
2017/12/15 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
在Python中过滤Windows文件名中的非法字符方法
2019/06/10 Python
使用Python脚本zabbix自定义key监控oracle连接状态
2019/08/28 Python
Python reshape的用法及多个二维数组合并为三维数组的实例
2020/02/07 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
tensorflow dataset.shuffle、dataset.batch、dataset.repeat顺序区别详解
2020/06/03 Python
唤醒头发毛囊的秘密武器:Grow Gorgeous
2016/08/28 全球购物
亚马逊巴西站:Amazon.com.br
2019/09/22 全球购物
市场营销专业个人自荐信格式
2013/09/21 职场文书
超详细Python解释器新手安装教程
2021/05/10 Python
讲解MySQL增删改操作
2022/05/06 MySQL
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技