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


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

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

上一页  1 2 3 4 5  下一页


  ISAXContentHandler接口接收关于文档的内容变化的事件,这是实现SAX应用所需要的最重要的接口,如果应用在遇到基本的解析事件的时候需要被通知的话,ISAXXMLReader通过方法putContentHandler来注册这个实例,然后ISAXXMLReader就使用这个实例来报告基于文档的事件,比如元素的开始,元素的结束和相关的字符串数据等等。ISAXContentHandler 包括了很多的方法:比如startDocument,endDocument,startElement,endElement等等。实际上它包含了好接个startXXX和endXXX对来建立不同的信息集合的抽象。比如startDocument方法在文档信息开始的时候被调用,而在startDocument以后被调用的方法就被认为是文档信息项(item)的子项。在文档信息内容结束的时候endDocument就被调用,表示文档信息的结束。 实际上是SAX2在解析文档的时候,当处于文档某一位置的时候,会激发相应的方法,比如当一个文档开始的时候,就会激发startDocument方法,在实际实现的时候,我们可以在我们继承ISAXContentHandler类的实现类中,重载该方法,实现我们自己想要的处理。我们可以把这些方法看成是ISAXContentHandler接口提供给我们的。需要注意的是事件被处理的顺序和信息在文档中的位置是一致的。

  同时需要注意的是,如果我们需要在我们的应用中对这些消息进行处理的话,我们就要继承处理这些消息的类,比如我们只需要对文档内容进行处理,而忽略对DTD和解析过程中错误(Error)的处理,那么我们只需要创建一个新的类,该类继承ISAXContentHandler接口,因为ISAXContentHandler中定义了很多的事件处理方法,而事实上我们只需要对我们所关心事件的处理方法进行重载,对我们不关心的事件可以简单的忽略它。

   比如我们只关心startElement和endElement事件,而且我们假设我们建立的类的名称为CXMLContentDeal,我们的类就可以如下面所示:

  class CXMLContentDeal : public ISAXContentHandler

  {

   public:

   CXMLContentDeal();

   virtual CXMLContentDeal ();

   virtual HRESULT STDMETHODCALLTYPE startElement(

           /* [in] */ wchar_t __RPC_FAR *pwchNamespaceUri,

           /* [in] */ int cchNamespaceUri,

           /* [in] */ wchar_t __RPC_FAR *pwchLocalName,

           /* [in] */ int cchLocalName,

           /* [in] */ wchar_t __RPC_FAR *pwchRawName,

           /* [in] */ int cchRawName,

           /* [in] */ ISAXAttributes __RPC_FAR *pAttributes);

   irtual HRESULT STDMETHODCALLTYPE endElement(

           /* [in] */ wchar_t __RPC_FAR *pwchNamespaceUri,

           /* [in] */ int cchNamespaceUri,

           /* [in] */ wchar_t __RPC_FAR *pwchLocalName,

           /* [in] */ int cchLocalName,

           /* [in] */ wchar_t __RPC_FAR *pwchRawName,

           /* [in] */ int cchRawName);

        }

然后我们可以重载方法startElement和endElement来进行和应用相关的特殊的处理。

上一页  1 2 3 4 5  下一页

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