Skip to main content

Python 入门基础知识 - 使用Python处理XML(一)

Python 入门基础知识 - 使用Python处理XML(一)

使用Python处理XML

在Python中提供了许多标准模块用于处理XML文档。例如使用Expat分析器的xml.parsers.expat模块,

使用SAX分析器的xml.sax模块,使用DOM的xml.dom模块。其中xml.parsers.expat和xml.sax模块与

HTMLParser类似,都是基于事件的方式对XML文档进行分析。

本篇文章简单了解下使用xml.parsers.expat处理XML


在Python中使用xml.parsers.expat处理XML时,应首先使用其ParserCreate创建一个XMLParser实例

对象。其原型如下

ParserCreate(encoding, namespace_separator)

参数含义如下

encoding: XML文档的编码,可选参数

namespace_separator: XML文档的命令空间,可选参数


当创建XMLParser对象后需要使用Parse或者ParseFile方法向其传递要处理的XML数据或XML文档。其原型如下

Parse(data, isfinal)

参数含义如下

data: 要进行处理的XML数据

isfinal: 当最后一次调用该方法时,isfinal应为True,可选参数

ParseFile(file)

参数含义如下

file: 打开的文件对象


在使用XMLParser处理XML的过程中,当遇到相应的事件时,XMLParser会调用相应的事件处理方法。在使用

XMLParser时可以通过继承创建新类,重载需要处理的方法,也可以直接使用XMLParser,自己编写函数,将

其赋值给XMLParser的处理方法。当XMLParser遇到XML文档声明时,会调用XmlDeclHandler方法,其原型如下

XmlDeclHandler(version, encoding, standalone)

其参数如下

version: XML规范的版本

encoding: XML文档的编码

standalone: XML文档的standalone属性值


当XMLParser遇到文档类型定义开始时,将调用StartDoctypeDeclHandler方法,当结束时将调用EndDoctypeDeclHandler

方法。其原型如下

StartDoctypeDeclHandler(doctypeName, systemId, publicId, has_internal_subset)

参数含义如下

doctypeName: DID名称

systemId: 系统标识

publicId: 公共标识

has_internal_subset: 如果XML文档包含DTD,则has_internal_subset为真

EndDoctypeDeclHandler()


当XMLParser遇到DTD中元素声明时,将调用ElementDeclHandler方法。其原型如下

ElementDeclHandler(name, model)

参数含义如下

name: 元素名

model: 元素内容模型


当XMLParer遇到DTD中元素属性声明时,将调用AttlistDeclHandler方法,其原型如下

AttlistDeclHandler(elname, attname, type, default, required)

参数含义如下

elname: 元素名

attname: 属性名

type: 元素数据类型

default: 属性默认值

required: 如果属性为必须的,则required为真。


当XMLParser遇到元素开始标记时,将调用StartElementHandler方法,当遇到结束标记是,将调用EndElementHandler

方法,原型如下

StartElementHandler(name, attributes)

参数含义如下

name: 元素名

attributes: 元素属性

EndElementHandler(name)

参数含义如下

name: 元素名


当XMLParser遇到XML处理指令时,将调用ProcessingInstructionHandler方法,其原型如下

ProcessingInstructionHandler(target, data)

参数含义如下

target: 指令名称

name: 指令数据


当XMLParser遇到字符数据时,将调用CharacterDataHandler方法,原型如下

CharacterDataHandler(data)

参数含义如下

data: 字符数据


当XMLParser遇到XML文档中的注释时,将调用CommentHandler方法,原型如下

CommentHandler(data)

参数含义如下

data: 注释内容


当XMLParser遇到CDATA开始时,将调用StartCdataSectionHandler方法,当遇到CDATA结束时

将调用EndCdataSectionHandler方法。

版权声明

版权声明

durban.zhang 创作并维护的 Walkerfree 博客采用 创作共用保留署名-非商业-禁止演绎4.0国际许可证。本文首发于 Walkerfree 博客(http://www.walkerfree.com/),版权所有,侵权必究。本文永久链接:http://www.walkerfree.com/article/97