微软公司的XML核服务(Core
Services),也就是广为人知的MSXML2,为VB和COM开发者提供了一种很有用的XML工具箱。在前面的几篇文章中,我已经介绍了MSXML2的DOM解析器,并演示了如何在一个图书目录管理应用程序中使用它的例子。现在,我将带你看看XML解析器coin的SAX部分。
受篇幅所限,我只能在本文简单的讨论一下SAX是如何工作的,如果你对SAX感兴趣,我建议你看看我们以前的一篇文章《XML基础教程:掌握SAX 》一文。简单的说,SAX(XML的简单API,即Simple API for XML)是一种连续的push解析器,SAX解析器把XML文档中的元素按照先后顺序依次推到它的主应用程序中。SAX最初是用来作为Java的解析器的,随后用于各种各样的其它语言,包括微软公司的COM实现。最为一种解析器,SAX相对于DOM的一个优势就是处理大文档以及查询文档中某段特定信息。当然,SAX要比DOM复杂,它要求你跟踪SAX正在处理的内容信息以便知道解析器处于文档中的哪个部分。
在MSMAX2中实际上有两种SAX实现,一种实现是为VB程序员提供的,而另一种适合于C++开发者。从VB的角度来看,你需要管理几个类并用SAX运行它们。
MSXML为VB提供的SAX解析器由IVBSAXXMLReader界面定义。SAXXMLReader类是该界面的一个与版本无关(version-independent)的实现,你可以在应用程序中把它做为读取器(reader)来使用,这样可以保证应用程序与MSXML的新版本兼容。你可以通过调用parse或者parseURL方法来设置解析器处理某个文档。就它本身而言,SAXXMLReader只能解析文档,它不能通知你它正在分析的内容。你将需要实现一种有效的界面来实际利用解析器。