Overview of the SAX to DOM Example

 

This simple SAX to DOM example uses Microsoft® Visual Basic® code that creates DOMDocument and MXXMLWriter objects, sets the MXXMLWriter object as the ContentHandler, and then sets the output property of the MXXMLWriter object as the DOMDocument object. The ContentHandler method calls cause nodes to be built as the root document instance of the provided document. At the end of the procedure, DOM methods are used to return the name of the author, and to display the name in a message box.

To run the code sample

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

  2. In the Visual Basic 6.0 Window, from the Project menu, select References.

  3. Under Available References, select Microsoft XML, 3.0, and then click OK.

    Note

    This example is written to show using MSXML 3.0, but you can use a later version, by setting your project reference accordingly here and updating any version-specific ProgIDs. For example, update the code so that any SAXXMLReader30 objects are of SAXXMLReader40 type instead if you are setting a reference to MSXML 4.0 in this step.

  4. In the Toolbox, click the Button control, and then add a button to the Form1 window.

  5. Add the following code to the Command1_Click procedure and then click Start on the toolbar.

Complete Code for the SAX to DOM Example

Private Sub Command1_Click()
    Dim xmlDoc As New Msxml2.DOMDocument30
    'If using SAX lexical handler, the following line is required.
    xmlDoc.validateOnParse = False

    Dim nodeList As IXMLDOMNodeList
    Dim wrt As New MXXMLWriter30
    Dim cnth As IVBSAXContentHandler
    'If using SAX lexical handler, the following line is required.
    Dim lexh As IVBSAXLexicalHandler
    Dim atrs As New SAXAttributes30
    Dim objNodeList

    Set cnth = wrt
    'If using SAX lexical handler, the following line is required.
    Set lexh = wrt
    wrt.output = xmlDoc

    'Configures the writer to indent elements.
    wrt.indent = True

    'Starts the document.
    cnth.startDocument

    'Adds the XML declaration.
    cnth.processingInstruction "xml", "version='1.0'"

    'Inserts DOCTYPE delcaration for DTD in DOM output.
    lexh.startDTD "catalog", "", "books.dtd"
    lexh.endDTD
    'You can remove or comment out previous two lines if 
    'you are not linking to a DTD.

    'Adds the <catalog> element to the page.
    cnth.startElement "", "", "catalog", atrs

    'Adds the id attribute to the collection witht he "bk0101" value.
    atrs.addAttribute "", "", "id", "CDATA", "bk101"
    'Creates the <book id="bk101"> tag.
    cnth.startElement "", "", "book", atrs
    'Clears the attribute collection.
    atrs.Clear

    'Creates the <author>Gambardella, Matthew</author> string.
    cnth.startElement "", "", "author", atrs
    cnth.characters "Gambardella, Matthew"
    cnth.endElement "", "", "author"

    'Creates the <title>XML Developer's Guide</title> string.
    cnth.startElement "", "", "title", atrs
    cnth.characters "XML Developer's Guide"
    cnth.endElement "", "", "title"

    'Creates the <description>An in-depth look at...</description> string.
    cnth.startElement "", "", "description", atrs
    cnth.characters "An in-depth look at creating applications with XML"
    cnth.endElement "", "", "description"

    'Adds closing tags for <book> and <catalog> elements.
    cnth.endElement "", "", "book"
    cnth.endElement "", "", "catalog"

    'Ends the document.
    cnth.endDocument

    'Displays the author's name in a message box.
    Set objNodeList = xmlDoc.getElementsByTagName("author")
    MsgBox objNodeList.Item(0).Text
End Sub

See Also

Setting a DOMDocument Object as MXXMLWriter Output
MXXMLWriter CoClass
output Property
IXMLDOMDocument-DOMDocument