您现在的位置是: 软件 > 开发者网络 > 技术跟踪 > XML与.NET专栏 > 正文


-Win xp中的多种网络
-试验试验试验试验
-用Freehand实现位图矢量化
-网络电话面面观

基于SAX的XML文档解析器分析
2001-02-24· ·胡朝晖··yesky

上一页  1 2 3 4 5  


  3. 通过接口ISAXXMLReader创建一个解析器。XMLReader是SAX应用实现的主要的接口,XMLReader的作用是这样的。首先,XML的开发人员使用这个接口来注册他们对其他SAX接口的实现(比如ContentHandler,DTDHandler,ErrorHandler等等),另外,XMLREADER通过setFeature和setProperty两个方法来配置SAX解析器的行为,最后,XMLReader封装了解析的功能。示例代码如下:

   ISAXXMLReader* pRdr = NULL;

   HRESULT hr = CoCreateInstance(_uuidof(SAXXMLReader), NULL, CLSCTX_ALL, __uuidof(ISAXXMLReader), (void **)&pRdr);

  4. 创建相应的事件(handler)处理类,这里不妨假设我们只处理和文档内容相关的事件。示例代码如下:

   CXMLContentDeal * pMc = new CXMLContentDeal();

   注意这里CXMLContentDeal是继承接口ISAXContentHandler的类。

  5.在解析器中注册事件处理类,示例代码如下:

   hr = pRdr->putContentHandler(pMc);

  6.开始进行文档的解析,示例代码如下

   hr = pRdr->parseURL(URL); file://这里的URL是指一个具体XML文档的位置

  7.释放解析器对象

   pRdr->Release();

以上就是基于SAX的应用程序的框架结构,我们可以看到,实际的事件处理是在我们的继承类CXMLContentDeal中实现的,在我们这个示例代码中,每当文档中一个新的元素开始的时候,都会激活方法startElement,每当一个元素结束的时候,都会激活方法endElement。我们可以在startElement和endElement中写入和应用相关的特定的代码。

  5. 小结

  SAX提供了一个解析XML文档的轻量级实现,它和DOM的对XML文档的解析在某种意义上可以和用ATL建立COM对象和用MFC建立COM对象的意义相比较,它能够搜索一个巨大的XML文档并从中提取一小部分有用的信息。它能够随时终止对XML文档的解析,而且它对系统的要求很低,不会随XML文档尺寸的增加而增加对系统的开销。

  本文简单介绍了如何用微软提供的SAX解析器进行XML文档解析,并给出了基于SAX的应用的框架结构,利用SAX,我们可以在自己的应用中嵌入对XML文档的分析和处理,并且不会大大增加应用对系统资源的需求。


上一页  1 2 3 4 5  

■ 相关内容
 成功软件开发者的9种编程习惯
 实战Delphi数据网格色彩特效
 一步一步学习COM
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!