python对XML的解析总结

本文详细介绍了Python解析XML的三种方法:SAX、DOM和ElementTree。重点讨论了ElementTree,它具有代码简洁、速度快、内存消耗少的特点。通过实例展示了如何使用DOM和ElementTree构建和解析XML文档,同时也提到了SAX适用于处理大型XML文件的场景。
摘要由CSDN通过智能技术生成

转载了这么多的文章,终于可以写一点自己的东西了。初学Python不久,程序中不当之处还请各位看官不吝赐教。

本文中很多地方都是参考了其他人的博文,具体的也不甚清楚到底参考了哪些,在此仅列出一个大概吧。绿色背景表示含有链接。

感谢gaodeyue,他的例程写的很好。我直接参考了他的DOM构建和解析XML文档的程序写了一个我自己的XML文档。另外的那篇Python处理XML数据之SAX我想也还不错,不过现在觉得还是没必要学,时间又稍微有点紧,所以先不弄了,转载过来好了。其实想写这篇博文也是因为看了他的Python处理XML数据之DOM篇才有这个想法的。非常感谢。

感谢yueguanghaidao,在网上游荡了好久,发现用ElementTree来解析XML文档的很多,但是用ElementTree来生成XML文件的真滴不多,而且很杂乱,然后我就找到了yueguanghaidao的这篇博文,参照着把ElementTree生成XML文档的程序给写出来了。同样非常感谢。本博文的第二大段文字“Python有三种方法解析XML”亦是来自于yueguanhaidao在此再次表示感谢。

感谢大CC,引用了他写的美化程序,非常的好用,非常谢谢!

注:我所使用的Python版本为2.7.3

Python提供了两种XML支持:

第一种是支持两种XML解析的行业标准方法——SAX和DOM 。 SAX(Simple API for XML ,用于XML的简单API)以事件处理为基础,按照遇到XML元素的顺序读取XML文档,触发处理函数来执行处理。DOM (Document Object Model ,文档对象模型)构建表示整个XML文档的树结构。树结构构建完成后, DOM将提供一个遍历树和提取数据的接口。SAX和DOM API都不是源自Python ,Python只是复制了为Java和JavaScript开发的接口。


第二种是支持特定于Python的XML解析方住。尽管可以使用SAX和DOM接口处理XML ,但是标准库中最方便的编程接口还是ElementTree接口。这种方住充分利用了Python的语言特点,大部分用户发现它比SAX或DOM要更加简单快捷。本文将讨论这3 种XML解析方法,重点讨论ElementTree方法。
这里建议读者只关注基本的XML数据解析。Python还包括与实现新类型解析、从头构建XML文档等方面有关的XML模块。此外,各种第三方扩展插件扩展了Python的功能,添加了其他XML功能,如支持XSLT和XPATH。更多信息的链接,请参见http://wiki.python.org/moin/PythonXml

python有三种方法解析XML:SAX、DOM以及ElementTree

1.SAX (simple API for XML )
pyhton 标准库包含SAX解析器,SAX是一种典型的极为快速的工具,在解析XML时,不会占用大量内存。但是这是基于回调机制的,因此在某些数据中,它会调用某些方法进行传递。这意味着必须为数据指定句柄,以维持自己的状态,这是非常困难的。

2.DOM(Document Object Model)
与SAX比较,DOM典型的缺点是比较慢,消耗更多的内存,因为DOM会将整个XML数读入内存中,并为树中的第一个节点建立一个对象。使用DOM的好处是你不需要对状态进行追踪,因为每一个节点都知道谁是它的父节点,谁是子节点。但是DOM用起来有些麻烦。

3.ElementTree(元素树)
ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少,这里主要介绍ElementTree。

下面是一个简单的XML例子,其文件名为ep1.xml

<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
	<book category="COOKING">
		<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值