Python XML操作处理

Python XML操作处理: 可扩展标记语言(XML)是一个很象HTML或SGML的标记语言。这是建议由万维网联盟作为一个开放的标准.

什么是XML ?

可扩展标记语言(XML)是一个很象HTML或SGML的标记语言。这是建议由万维网联盟作为一个开放的标准.

XML是一种便携式的,开源的语言,它允许程序员开发可以由其他应用程序读取的应用,无论操作系统和/或发展语言.

XML是非常有用的,为保持跟踪小到中量的数据,而不需要一个基于SQL的的支柱.

XML分析器体系结构和API:

Python标准库提供了一个最小的接口,但有用的一套使用XML.

两个最基本和最广泛使用的API,XML数据是SAX和DOM接口.

  • Simple API for XML (SAX) : 在这里你感兴趣的事件注册回调,然后让通过的文件进行的解析器。当您的文件是大型或你有内存限制,这是非常有用的,它解析的文件,因为它从磁盘读取整个文件没有存储在内存中.

  • Document Object Model (DOM) API : 这是万维网联盟的建议,其中将整个文件读入内存,并存储在一个层次(树状)的形式表示XML文档的所有功能.

SAX的,显然不能作为DOM快速处理的信息可以与大文件时的工作。另一方面,使用DOM完全可以真的操作你的资源,特别是如果使用大量小文件.

SAX是只读,而DOM允许修改XML文件。由于这两种不同的API的字面相辅相成,没有任何理由,你为什么不能使用大型项目.

为我们所有的XML代码例子,让我们用一个简单的XML文件movies.xml作为输入:

War, ThrillerDVD2003PG10Talk about a US-Japan warAnime, Science FictionDVD1989R8A schientific fictionAnime, ActionDVD4PG10Vash the Stampede!ComedyVHSPG2Viewable boredom

用SAX API的解析XML:

SAX是一种事件驱动的解析XML的标准接口。使用SAX解析XML的一般要求你通过继承xml.sax.ContentHandler创建自己的ContentHandler,.

您的ContentHandler的处理你的味道,特别是标签和属性的XML(S)。一个ContentHandler对象提供的方法来处理各种解析事件。其拥有的解析器调用ContentHandler方法,因为它解析XML文件.

startDocument和endDocument的方法被称为在开始和结束的XML文件。通过参数文本的方法字符(文本)通过XML文件中的字符数据.

ContentHandler是在每个元素的开始和结束。如果分析器不能在命名空间的模式,方法的startElement(标签,属性)和endElement(标签)被称为否则,相应方法startElementNS和endElementNS的被称为。在这里,标签元素的标签,和属性是一个属性对象.

在这里,还有其他重要的方法来了解,然后再进行:

make_parser 方法:

下面的方法创建一个新的解析器对象,并返回它。创建解析器对象将是第一个解析器类型系统发现.

xml.sax.make_parser( [parser_list] )

下面是详细的参数:

  • parser_list: 可选的参数组成的解析器使用,都必须实施make_parser方法.

parse 方法:

下面的方法创建一个SAX解析器和使用它来解析文档.

xml.sax.parse( xmlfile, contenthandler[, errorhandler])

下面是详细的参数:

  • xmlfile: 这是读取XML文件的名称.

  • contenthandler: 这必须是一个ContentHandler对象.

  • errorhandler: 如果指定的ErrorHandler必须是一个SAX ErrorHandler对象.

parseString 方法:

还有一个方法创建一个SAX解析器来解析指定的XML字符串.

xml.sax.parseString(xmlstring, contenthandler[, errorhandler])

下面是详细的参数:

  • xmlstring: 这是读取XML字符串的名称.

  • contenthandler: 这必须是一个ContentHandler对象.

  • errorhandler: 如果指定的ErrorHandler必须是一个SAX ErrorHandler对象.

例子:

#!/usr/bin/pythonimport xml.saxclass MovieHandler( xml.sax.ContentHandler ):def __init__(self):self.CurrentData = ""self.type = ""self.format = ""self.year = ""self.rating = ""self.stars = ""self.description = ""# Call when an element startsdef startElement(self, tag, attributes):self.CurrentData = tagif tag == "movie":print "*****Movie*****"title = attributes["title"]print "Title:", title# Call when an elements endsdef endElement(self, tag):if self.CurrentData == "type":print "Type:", self.typeelif self.CurrentData == "format":print "Format:", self.formatelif self.CurrentData == "year":print "Year:", self.yearelif self.CurrentData == "rating":print "Rating:", self.ratingelif self.CurrentData == "stars":print "Stars:", self.starselif self.CurrentData == "description":print "Description:", self.descriptionself.CurrentData = ""# Call when a character is readdef characters(self, content):if self.CurrentData == "type":self.type = contentelif self.CurrentData == "format":self.format = contentelif self.CurrentData == "year":self.year = contentelif self.CurrentData == "rating":self.rating = contentelif self.CurrentData == "stars":self.stars = contentelif self.CurrentData == "description":self.description = contentif ( __name__ == "__main__"):# create an XMLReaderparser = xml.sax.make_parser()# turn off namepsacesparser.setFeature(xml.sax.handler.feature_namespaces, 0)# override the default ContextHandlerHandler = MovieHandler()parser.setContentHandler( Handler )parser.parse("movies.xml")

这将产生以下结果:

*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Year: 2003
Rating: PG
Stars: 10
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Year: 1989
Rating: R
Stars: 8
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Stars: 10
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Stars: 2
Description: Viewable boredom

对于一个SAX API文档的完整细节,请参考标准 Python SAX APIs.

XML的DOM API解析:

文档对象模型,或“DOM中,”是一个由万维网联盟(W3C)的跨语言的API,用于访问和修改XML文档.

DOM是随机存取的应用极为有用。 SAX只允许你的时间在一个文件的位的看法。如果你正在寻找一个SAX元素,你有没有到另一个接入.

这是最简单的方法快速加载一个XML文件,并创建一个minidom使用xml.dom中的模块对象。的minidom对象提供了一个简单的解析器的方法,很快就会从XML文件创建一个DOM树.

示例短语调用parse( file [,parser] )函数 minidom对象来解析XML文件的文件指定到一个DOM树对象.

#!/usr/bin/pythonfrom xml.dom.minidom import parse
import xml.dom.minidom# Open XML document using minidom parser
DOMTree = xml.dom.minidom.parse("text.xml")
collection = DOMTree.documentElement
if collection.hasAttribute("shelf"):print "Root element : %s" % collection.getAttribute("shelf")# Get all the movies in the collection
movies = collection.getElementsByTagName("movie")# Print detail of each movie.
for movie in movies:print "*****Movie*****"if movie.hasAttribute("title"):print "Title: %s" % movie.getAttribute("title")type = movie.getElementsByTagName('type')[0]print "Type: %s" % type.childNodes[0].dataformat = movie.getElementsByTagName('format')[0]print "Format: %s" % format.childNodes[0].datarating = movie.getElementsByTagName('rating')[0]print "Rating: %s" % rating.childNodes[0].datadescription = movie.getElementsByTagName('description')[0]print "Description: %s" % description.childNodes[0].data

这将产生以下结果:

Root element : New Arrivals
*****Movie*****
Title: Enemy Behind
Type: War, Thriller
Format: DVD
Rating: PG
Description: Talk about a US-Japan war
*****Movie*****
Title: Transformers
Type: Anime, Science Fiction
Format: DVD
Rating: R
Description: A schientific fiction
*****Movie*****
Title: Trigun
Type: Anime, Action
Format: DVD
Rating: PG
Description: Vash the Stampede!
*****Movie*****
Title: Ishtar
Type: Comedy
Format: VHS
Rating: PG
Description: Viewable boredom

对DOM API文档的完整细节,请参考标准 Python DOM APIs.

Python XML操作处理相关推荐

  1. python读取xml编码gb2312_【转】python XML 操作总结(创建、保存和删除,支持utf-8和gb2312)...

    最近写程序需要用到xml操作,看了看python.org上面的几个xml类库,还是一头雾水,感觉太学术化了,都那么吝惜写几个例子.所以自己整理了一下,算是个小总结,和大家分享一下吧. 对于简单的操作x ...

  2. python对XML 操作

    python对XML 操作 一.XML的读取. 在 NewEdit 中有代码片段的功能,代码片段分为片段的分类和片段的内容.在缺省情况下都是用XML格式保存的.下面我讲述一下,如何使用minidom来 ...

  3. python:操作文档——TXT篇

    python:操作文档--TXT篇 一.前言: ​ 文档操作是任何web应用程序的组成部分,我们可以将一些保密级别不高的数据存储在文档中,这样就使得数据永久保存,而不是像全局变量一样,当程序结束后自动 ...

  4. Python文件操作-文本文件、二进制文件、csv文件的读取写入、OS、shutil、CSV模块、常用字符编码

    Python文件操作 文本文件和二进制文件 文件操作相关模块 open()创建文件对象 文件对象的常用属性和方法 pickle 序列化 文本文件读取和写入 文本文件写入步骤 write()/write ...

  5. Python xml 读取之 ET.parse

    Python xml 读取之 ET.parse 前一篇写到了xml 读取方法(一)dom.minidom,本次再介绍一种方法:ET.parse. 常用操作: tree = ET.parse(xml_p ...

  6. python xml第三方库_Python-XML库

    0 前言 XML即可扩展标记语言,XML是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者. Python-基础篇 ...

  7. Python文件操作相关的知识笔记总结

    python文件操作相关知识 1.文件操作 路径相关 上下文管理 文件的打开模式 文件操作的常见功能 学前知识背景回顾: 字符串类型(str):程序中表示文字信息,本质是unicode编码中的二进制. ...

  8. OpenCV和Python动手操作计算机视觉学习教程

    使用OpenCV和Python进行实际操作 面向初学者的OpenCV Python动手操作计算机视觉 你会学到: NumPy基础知识 基于OpenCV的人脸检测 使用OpenCV在图像和视频上绘制形状 ...

  9. python字典操作添加_Python字典常见操作实例小结【定义、添加、删除、遍历】

    本文实例总结了python字典常见操作.分享给大家供大家参考,具体如下: 简单的字典: 字典就是键值对key-value组合. #字典 键值对组合 alien_0 ={'color':'green', ...

最新文章

  1. 自动语音识别(ASR)自监督方法研究综述
  2. 性能测试工具比较:LoadRunner vs JMeter - 测试结果数据比较
  3. ECSHOP中transport.js和jquery的冲突的简单解决办法
  4. 服务器关闭重启后客户端socket能自动连接吗_用Python 撸一个 Web 服务器
  5. 9.23 基础知识
  6. Redis4.0之持久化存储
  7. [leetcode]187. Repeated DNA Sequences寻找DNA中重复出现的子串
  8. 叉积(向量积、外积)的运算法则及其与点积(数量积、内积)的混合运算
  9. win10怎样将桌面上回收站快捷键图标隐藏或显示
  10. Python 实现多个Excel工作表绘制曲线图
  11. 【C语言】指针进阶第五站,函数指针
  12. Maxscript基本数据类型(二):Name
  13. 微信公众号获取的实时坐标和高德地图坐标系的转换
  14. SQL 增加或删除一列
  15. 为了反击爬虫,前端工程师的脑洞可以有多大?
  16. 期刊分类—CSSCI、A类、B类、C类、核心期刊的区别
  17. python使用大数据-使用Python进行大数据分析
  18. How to modify comment and attribute ClearCase
  19. 双系统删除Linux引导(MbrFix.exe)
  20. 弹性工作制让企业留得住人

热门文章

  1. 现代软件工程讲义 如何提出靠谱的项目建议
  2. 给页面加上Loading效果最简单实用的办法
  3. ebook site
  4. 判定浏览器是否支持原生透明
  5. python大神读取_大神教你python 读取文件并把矩阵转成numpy的两种方法
  6. MySQL常用命令用法总结
  7. Win7如何快速打开本地连接
  8. Android开发学习之卡片式布局的简单实现
  9. 启动数据库时提示ORA-03113: 通信通道的文件结尾解决方法
  10. webpack前端构建工具学习总结(一)之webpack安装、创建项目