Important:
This is retired content. This content is outdated and is no longer being maintained. It is provided as a courtesy for individuals who are still using these technologies. This content may contain URLs that were valid when originally published, but now link to sites or pages that no longer exist.
A version of this page is also available for
4/8/2010

The first step of creating a SAX2 application is to implement handler classes. When you use SAX2, the most useful handler class is ContentHandler. You derive this class from the ISAXContentHandlerinterface.

To use the SAX2 interfaces that come with MSXML, you need to declare them using the following code example.

Copy Code
#include <msxml2.h>
Note:
For the JumpStart application, declare the interfaces in the StdAfx.h file.

Example

The following code example shows how to create the header file, named MyContent.h. This file is required to implement the ContentHandler.

Copy Code
#include "SAXContentHandlerImpl.h"

class MyContent : public SAXContentHandlerImpl  
{
public:
	MyContent();
	virtual ~MyContent();
	
		virtual HRESULT STDMETHODCALLTYPE startElement( 
		// Receives notification of the beginning of an element. 
		// The reader invokes the startElement method at the
beginning of every element in the XML document.

			wchar_t __RPC_FAR *pwchNamespaceUri, //in, the
namespace URI
			int cchNamespaceUri, 			 //in, the length
of the namespace URI
			wchar_t __RPC_FAR *pwchLocalName, //in, the local
name string.
			int cchLocalName, 			 //in, the length of
the local name string
			wchar_t __RPC_FAR *pwchQName,  //in, the XML 1.0
qualified name (QName), with prefix, 
												//or, an empty
string (if QNames are not available).
			int cchQName, 				 //in, the length of
the QName
			ISAXAttributes __RPC_FAR *pAttributes); //in, the
attributes attached to the element
	
		virtual HRESULT STDMETHODCALLTYPE endElement( 
		// Receives notification of the end of an element. 
		// The reader invokes this method at the end of every
element in the XML document.

			wchar_t __RPC_FAR *pwchNamespaceUri, //in, the
namespace URI
			int cchNamespaceUri, 			 //in, the length
of the namespace URI
			wchar_t __RPC_FAR *pwchLocalName, //in, the local
name string.
			int cchLocalName, 			 //in, the length of
the local name string
			wchar_t __RPC_FAR *pwchQName,  //in, the XML 1.0
qualified name (QName), with prefix, 
												//or, an empty
string (if QNames are not available).
			int cchQName); 				//in, the length of
the QName

		virtual HRESULT STDMETHODCALLTYPE startDocument();
		// Receives notification of the beginning of a document. 
		// The reader invokes the startDocument method only once.


private:
		void prt(
		// conversion method for output
		// converts element specified by pwchVal to the format
specified by pwchFmt
			const wchar_t * pwchFmt, 	//in, format for
output
			const wchar_t __RPC_FAR *pwchVal, // in, element to be
converted
			int cchVal); 				// in, length of
element to be converted
	int idnt; // current depth in document tree, that is, number
of unclosed elements encountered
};

#endif //
!defined(AFX_MYCONTENT_H__E1B3AF99_0FA6_44CD_82E3_55719F9E3806__INCLUDED_)

See Also