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()

结果如下图所示:

解析和修改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常用内置模块之xml模块(详解)相关推荐

  1. python基础教程: os.stat() 和 stat模块详解

    stat 系统调用时用来返回相关文件的系统状态信息的. 首先我们看一下stat中有哪些属性: >>> import os >>> print (os.stat(&q ...

  2. python propresql mysql_Python中操作mysql的pymysql模块详解

    PyMySQL是一个Python编写的MySQL驱动程序,让我们可以用Python语言操作MySQL数据库. 首先,使用pip安装PyMySQL. pip install PyMySQL 使用PyMy ...

  3. python中common在哪个模块导入_python的常用模块之collections模块详解

    认识模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的 ...

  4. python哪个关键字可以导入模块_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  5. python数组相减_对Python 中矩阵或者数组相减的法则详解

    对Python 中矩阵或者数组相减的法则详解 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下: 定义了一个计算损失的函数: def error(yhat,labe ...

  6. python中导入模块是用哪个关键字_关于python导入模块import与常见的模块详解

    0.什么是python模块?干什么的用的? Java中如果使用abs()函数,则需要需要导入Math包,同样python也是封装的,因为python提供的函数太多,所以根据函数的功能将其封装在不同的m ...

  7. python中requests库的用途-python中requests库session对象的妙用详解

    在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也 ...

  8. python的sys模块有什么用_python sys模块详解

    Python sys 模块详解 1. 简介 "sys"即"system","系统"之意.该模块提供了一些接口,用于访问 Python 解释器 ...

  9. python数据挖掘课程】二十一.朴素贝叶斯分类器详解及中文文本舆情分析

    #2018-04-06 13:52:30 April Friday the 14 week, the 096 day SZ SSMR python数据挖掘课程]二十一.朴素贝叶斯分类器详解及中文文本舆 ...

最新文章

  1. android 在xml文件中引用自定义View
  2. pandas 提取股票价格
  3. Python-爬取音悦台MV列表以及反爬虫方法
  4. Render errors:One or more layouts are missing the layout_width or layout_height attributes
  5. web通信 长连接、长轮询
  6. python-魔法方法-attr系列方法
  7. BZOJ 1016: [JSOI2008]最小生成树计数( kruskal + dfs )
  8. 帮写python代码_10个工具,帮你写出更好的Python代码
  9. 在xcode6中使用矢量图(iPhone6置配UI)
  10. c++设计一个无法被继承的类
  11. C语言怎么实现熊猫上香中的系统错误提示,熊猫烧香的病毒是用什么程序语言编写的 原理是什么...
  12. singleTask和startActivityResult
  13. linux的防火墙端口配置
  14. 【渝粤题库】陕西师范大学163107饭店管理 作业【高起专】
  15. 【第1128期】从北京回来的年轻人,该告诉你点什么?
  16. stm32f4有重映射么_STM32 端口复用重映射(USART Remap)
  17. 数据分析师,你是车夫,还是拉车的驴子
  18. 华为OD机试 - 九宫格按键输入(Python) | 机试算法备考思路
  19. 计算机搜索栏打字不显示,win10搜索栏无法输入文字怎么办_win10电脑搜索栏无法输入的解决方法...
  20. 双离合档把上按钮作用_大众车自动档档把上的按钮是干什么用的?

热门文章

  1. 2019春第六周作业Compile Summarize
  2. [luoguP1168]中位数(主席树+离散化)
  3. .NET Excel 2003 批量插入数据很慢的解决办法
  4. jsp + js + 前端弹出框
  5. ORM之SQLAlchemy
  6. char nchar varchar nvarchar varchar2区别
  7. React事件处理函数传参问题
  8. python 学习总结6 前端学习2
  9. LeetCode LFU Cache
  10. Poj(2240),Floyd求汇率是不是赚钱