python常用内置模块-Python常用内置模块之xml模块

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

urlset = ET.Element("urlset")

# 在urlset下新建两个子节点,设置其名称分别为sina和chinabyte

url = ET.SubElement(urlset, "url")

# 在url下新建四个子节点,设置其节点名称分别为loc、lastmod、changefreq、priority

loc = ET.SubElement(url, "loc")

loc.text = "https://www.noniu.com/"

lastmod = ET.SubElement(url, "lastmod")

lastmod.text = "2015-12-19"

changefreq = ET.SubElement(url, "changefreq")

changefreq.text = "daily"

priority = ET.SubElement(url, "priority")

priority.text = "1.0"

# 将节点数信息保存在ElementTree中,并且保存为XML格式文件

tree = ET.ElementTree(urlset)

tree.write("sitemap.xml")

if __name__ == '__main__':

build_sitemap()

结果如下图所示:

57621320a8044.png

解析和修改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 = "https://www.noniu.com/jiaocheng/"

tree.write("sitemap.xml")

以上的代码将url修改为https://www.noniu.com/jiaocheng/了。另外,节点还有set(设置节点属性)、attrib(删除节点属性)方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值