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
Open Visual Basic 6.0, and in the New Project dialog box, double-click Standard EXE.
In the Visual Basic 6.0 Window, from the Project menu, select References.
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 ofSAXXMLReader40
type instead if you are setting a reference to MSXML 4.0 in this step.In the Toolbox, click the Button control, and then add a button to the Form1 window.
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