Python常用内置模块之xml模块(详解)

作者:jingxian 时间:2021-12-17 21:31:43 

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,xml模块,内置模块
0
投稿

猜你喜欢

  • Python pandas库中isnull函数使用方法

    2023-11-21 06:44:12
  • VsCode中ctrl+s后会在当前目录下自动生成dist目录的方法

    2023-04-25 09:19:41
  • Python生成随机MAC地址

    2023-04-09 18:05:57
  • 在Django中实现添加user到group并查看

    2021-12-08 21:47:07
  • python四则运算表达式求值示例详解

    2023-01-31 06:03:04
  • javascript利用apply和arguments复用方法

    2024-04-16 09:13:19
  • 对Python中class和instance以及self的用法详解

    2022-09-08 23:28:14
  • python实现坦克大战游戏 附详细注释

    2023-06-26 07:58:13
  • Python3.5多进程原理与用法实例分析

    2021-11-28 14:05:03
  • Python报错:ModuleNotFoundError的解决办法

    2023-02-19 10:53:09
  • Mysql锁内部实现机制之C源码解析

    2024-01-12 21:13:25
  • python自动化测试工具Helium使用示例

    2022-09-26 22:59:05
  • MySQL六种约束的示例详解

    2024-01-16 19:15:38
  • 慢慢的网页

    2009-11-12 12:53:00
  • 一个很棒的js图片代码

    2009-12-17 18:36:00
  • aws 通过boto3 python脚本打pach的实现方法

    2021-09-14 23:33:19
  • 细谈Mysql的存储过程和存储函数

    2024-01-23 11:05:24
  • Python之两种模式的生产者消费者模型详解

    2021-07-31 17:44:02
  • asp如何在数据库中用好Transaction?

    2010-06-22 21:07:00
  • mysql 一次向表中插入多条数据实例讲解

    2024-01-14 06:34:48
  • asp之家 网络编程 m.aspxhome.com