python类库31[DOM+SAX解析XML和HTML]
Standard Generalized Markup Language (SGML)即标准通用标记语言
Hypertext Markup Language (HTML)超文本标识语言
Extensible Markup Language (XML)可扩展标识语言
SGML,HTML,XML 都可以使用以下的SAX和DOM方式来解析 :
SGML是现时常用的超文本格式的最高层次标准,是可以定义标记语言的元语言,甚至可以定义不必采用< >的常规方式。
HTML和XML都是衍生于SGML,HTML是SGML的一个应用,不能用来定义其他的标记语言。
一 SAX 与 DOM
SAX (Simple API for XML) 和 DOM (Document Object Model)是处理XML文件的两种方法。
SAX是一种基于事件驱动的API。利用SAX解析XML文档牵涉到两个部分:解析器和事件处理器。解析器负责读取XML文档,并向事件处理器发送事件,如元素开始跟元素结束事件;而事件处理器则负责对事件作出相应,对传递的XML数据进行处理。
DOM 可以让你以分层次对象模型来访问储存在XML文档中的信息。DOM生成一棵节点树(以XML文档的结构和信息为基础)你可以通过这棵树来访问你的信息。在XML文档中的文本信息转变成一组树的节点。DOM本质上是节点的集合。
通过对SAX与DOM的分析,它们各有自己的不同应用领域。
SAX适于处理下面的问题:
1、对大型文件进行处理;
2、只需要文件的部分内容,或者只需从文件中得到特定信息。
3、想建立自己的对象模型的时候。
DOM适于处理下面的问题:
1、需要对文件进行修改;
2、需要随机对文件进行存取。
三 解析html的libs:
由于html对语法的要求不是那么的严格,且标签相对固定, 所以相比XML,解析器要求更加智能,且更加方便地处理html的标签。
http://lxml.de/
http://www.crummy.com/software/BeautifulSoup/
http://code.google.com/p/html5lib/
完!