Step 1: Creating the Header File
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 ISAXContentHandler interface.
To use the SAX2 interfaces that come with MSXML, you need to declare them using the following code example.
#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.
#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
Tasks
Tutorial: JumpStart for Creating a SAX2 Application with C++
Concepts
Step 2: Creating the MyContent Class
Getting Started with SAX2
SAX2 Developer Guide