Python之解析XML
来源:互联网 发布:淘宝店面如何装修 编辑:程序博客网 时间:2024/05/04 08:40
常见的XML编程接口有DOM和SAX,这两种接口处理XML文件的方式不同,当然使用场合也不同。
python有三种方法解析XML,SAX,DOM,以及ElementTree:
1.SAX (simple API for XML )
python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
2.DOM(Document Object Model)
将XML数据在内存中解析成一个树,通过对树的操作来操作XML。
3.ElementTree(元素树)
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。
注:因DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。
看例子,我创建一个ipfile.xml文件,内容:
<plist version="1.0"> <dict> <key>ip</key> <string>112.74.66.128</string> </dict></plist>
解析代码如下,首先创建一个自己的handler类:
from xml.dom.minidom import parseimport xml.dom.minidomclass MyXMLHandler(xml.sax.ContentHandler): //继承xml.sax的handler def __init__(self): self.key = "" self.ipKey = "" self.name = "" def startElement(self, name, attrs): self.name = name #获取属性 if self.name == "plist": print "plist: " def characters(self, content): if self.name == "key": #获取内容字段 self.key = content elif self.name == "string": self.ipKey = content def endElement(self, name): if self.name == "key": #最后结束一个标签<span style="font-family: 'Microsoft Yahei', 'Helvetica Neue', Helvetica, Arial, sans-serif;">搜索</span> print "key: ", self.key elif self.name == "string": print "string: ", self.ipKey self.name = ""
#创建解释器,利用sax解析 # parser = xml.sax.make_parser() # # # parser.setFeature(xml.sax.handler.feature_namespaces, 0) # # #创建XML句柄 # MyH = MyXMLHandler(); # # #设置内容句柄 # parser.setContentHandler(MyH) # # #解析XML文件 # parser.parse("ipfile.xml") #利用Dom解析 DOMTREE = xml.dom.minidom.parse("ipfile.xml") collection = DOMTREE.documentElement dictS = collection.getElementsByTagName("dict") for dict in dictS: key = dict.getElementsByTagName('key')[0] print "Type: %s" % key.childNodes[0].data ipkey = dict.getElementsByTagName('string')[0] print "Type: %s" % ipkey.childNodes[0].data
0 0
- Python之解析XML
- Python之xml解析
- python解析xml之lxml
- Python XML解析之DOM
- Python XML解析之SAX
- Python与xml之解析篇
- Python与xml之解析篇
- Python之使用ElementTree解析xml文件
- Python编程基础之十七XML解析
- Python学习之解析xml文件
- [代码笔记] python 之xml解析_dom
- python之解析最简单的xml
- python学习之 -- xml.etree.ElementTree解析xml
- python 解析XML xml.dom
- python 解析XML xml.dom
- python 解析XML xml.dom
- python解析xml(创建xml)
- python 解析XML xml.dom
- Android studio第一次使用配置
- git 无法提交报错 - error: The requested URL returned error: 403 Forbidden while accessing https://github.c
- delegate和notification的区别
- NRF51822自学笔记(五)蜂鸣器
- 飛飛(三十六)时间类(简单)
- Python之解析XML
- asp.net mvc3 数据验证(三)—自定义数据注解
- Mac入门(三)使用brew安装软件
- 第10周项目1-点-圆-圆柱类的设计(2)
- ViewPager+FragmentPagerAdapter实现微信5.2.1主界面架构
- Android 布局之layout_weight解析
- RMAN备份动态性能视图 V$BACKUP_PIECE
- JQuery的Promise详解(一):Promise基础
- Navicat备份远程Oracle数据库到本地