Share via


Implementing the ContentHandler (Visual Basic)

For the JumpStart application, you create the ContentHandler by adding a class that implements the IVBSAXContentHandler interface. Although creating a class may sound complex, Microsoft® Visual Basic® automates most of the process.

Opening a New Project

Before you can create a class based on the IVBSAXContentHandler interface, you must create a new project and then reference that project to Microsoft XML Core Services (MSXML).

To create a new project

  • Open Visual Basic 6.0 and, in the New Project dialog box, double-click Standard EXE.

Referencing MSXML

You must now instruct your application to use the MSXML2 type library provided with MSXML 6.0.

To create a reference to MSXML

  1. On the Project menu, click References.

  2. In the Available References list, select Microsoft XML, v6.0, and then click OK.

Creating and Implementing the Handler Class

You are now ready to create and implement the new ContentHandler class.

To create a new class

  1. On the Project menu, click Add Class Module.

  2. In the Add Class Module dialog box, double-click Class Module.

  3. On the View menu, select Properties Window.

  4. In the Properties Window, enter "ContentHandlerImpl" for the Name property.

To implement the ContentHandlerImpl Class

  1. In the Class Window, type "Implements", and then press the space bar.

    A drop down list appears with the all the available classes. (This list includes interfaces that are actually abstract classes.)

  2. In the drop-down list, double-click IVBSAXContentHandler. This is the interface you implement to create the ContentHandlerImpl class.

  3. In the Object drop-down list on the left side of the Class Window, click IVBSAXContentHandler.

    This automatically adds code to the Class Window.

  4. In the Procedure drop-down list on the right-hand side of the Class Window, select the IVBSAXContentHandler method or property that you want to add to this class. (You have to select each method even though you do not need to add code to each one.)

    For example, select startElement to add this method to the ContentHandlerImpl class. (When parsing an XML document, the reader will invoke this method each time it encounters a new element in the document.) After you select startElement from the list, the following code appears in the Class Window:

    Private Sub IVBSAXContentHandler_startElement _
                             (strNamespaceURI As String, _
                              strLocalName As String, _
                              strQName As String, _
                              ByVal oAttributes As MSXML2.IVBSAXAttributes)
    End Sub
    
  5. To enable the method or event selected in Step 4 to handle the corresponding event, you need to add the appropriate code to that method or property.

    For the startElement method added in Step 4, enter the code required to make the method look like this:

    Private Sub IVBSAXContentHandler_startElement(strNamespaceURI As _
                         String, strLocalName As String, strQName As _
                  String, ByVal oAttributes As MSXML2.IVBSAXAttributes)
    
        Dim i As Integer
    
        Form1.Text2.Text = Form1.Text2.Text & "<" & strLocalName
    
        For i = 0 To (oAttributes.length - 1)
            Form1.Text2.Text = Form1.Text2.Text & " " & _
            oAttributes.getLocalName(i) & "=""" & oAttributes.getValue(i) _
            & """"
        Next
    
        Form1.Text2.Text = Form1.Text2.Text & ">"
    
    End Sub
    
  6. To handle additional events passed by the reader, repeat steps 4 and 5 for each method or property that you want to add to the ContentHandlerImpl class.

Complete Code for the ContentHandlerImpl Class

The preceding instructions explain how to create a new project with a reference to MSXML, and how to create a ContentHandler class called ContentHandlerImpl by implementing the IVBSAXContentHandler interface. The following shows the complete code for the ContentHandlerImpl class.

Option Explicit
Implements IVBSAXContentHandler

Private Sub IVBSAXContentHandler_startElement(strNamespaceURI As _
              String, strLocalName As String, strQName As String, _
              ByVal oAttributes As MSXML2.IVBSAXAttributes)

    Dim i As Integer
    
    Form1.Text2.Text = Form1.Text2.Text & "<" & strLocalName
   
    For i = 0 To (oAttributes.length - 1)
        Form1.Text2.Text = Form1.Text2.Text & " " & _
        oAttributes.getLocalName(i) & "=""" & oAttributes.getValue(i) _
        & """"
    Next

    Form1.Text2.Text = Form1.Text2.Text & ">"
    
End Sub

Private Sub IVBSAXContentHandler_endElement(strNamespaceURI As String, _
                             strLocalName As String, strQName As String)

   Form1.Text2.Text = Form1.Text2.Text & "</" & strLocalName & ">"

End Sub


Private Sub IVBSAXContentHandler_characters(strChars As String)

    strChars = Replace(strChars, vbLf, vbCrLf)
    Form1.Text2.Text = Form1.Text2.Text & strChars
    
End Sub

Private Property Set IVBSAXContentHandler_documentLocator(ByVal RHS _
                                              As MSXML2.IVBSAXLocator)

End Property


Private Sub IVBSAXContentHandler_endDocument()

End Sub

Private Sub IVBSAXContentHandler_endPrefixMapping(strPrefix As String)

End Sub

Private Sub IVBSAXContentHandler_ignorableWhitespace(strChars As String)

End Sub

Private Sub IVBSAXContentHandler_processingInstruction(strTarget As _
                                            String, strData As String)
    
    Form1.Text2.Text = Form1.Text2.Text & "<?" & strTarget & " " _
      & strData & ">"

End Sub

Private Sub IVBSAXContentHandler_skippedEntity(strName As String)

End Sub

Private Sub IVBSAXContentHandler_startDocument()
   
End Sub


Private Sub IVBSAXContentHandler_startPrefixMapping(strPrefix As String, _
                                                       strURI As String)

End Sub

As you can see from the sample code, not all methods or properties have custom code added to them. When you implement a handler for the Simple API for XML (SAX2), you can add only the methods or properties that you need.

In the next section, you create the ErrorHandler for the JumpStart application.