| | | 基于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 | | | 感谢
访问天极网,如果您觉得该文章涉及版权问题,请看这里!
|
|