Visual Basic Code (allErrors.frm)
' Check "Microsoft XML, v50" from Project->References...
' in Visual Studio.
Dim er, e As IXMLDOMParseError2
Dim errs As IXMLDOMParseErrorCollection
Dim xd As New DOMDocument50
Dim xs As New XMLSchemaCache50
' Add xs to xd.
xs.Add "urn:books", App.Path & "\books.xsd"
Set xd.schemas = xs
xd.async = False
xd.validateOnParse = False
xd.setProperty "MultipleErrorMessages", True
' Load the XML file to xd.
xd.Load App.Path & "\books.xml"
Set er = xd.Validate
If er.errorCode <> 0 Then
Set errs = er.allErrors
errsCount = errs.length
msg = "Error as returned from validate():" & vbCrLf _
& vbCrLf & " Error Code:" & vbCrLf & er.errorCode _
& vbCrLf & " Error reason:" & vbCrLf & er.reason _
& vbCrLf & " Error location:" & vbCrLf & er.errorXPath _
& vbCrLf & " Error Count:" & vbCrLf & errsCount & vbCrLf _
& vbCrLf & "Error items from the allErrors collection:"
For i = 0 To errsCount - 1
Set e = errs.Item(i)
msg = msg & vbCrLf & vbCrLf & "ErrorItem[" & i & "]" _
& vbCrLf & " reason:" & vbCrLf & e.reason _
& vbCrLf & " localtion:" & vbCrLf & e.errorXPath
Next
Else
msg = msg & "DOM is valid:" & vbCrLf & xd.xml & vbCrLf
End If
MsgBox msg
Try It!
- Copy the XML data (books.xml), and paste it into a text file. Save the file as books.xml.
- Copy the XSD listing (books.xsd), and paste it into a text file. Save the file as books.xsd, in the same directory where you saved books.xml.
- Create a Standard EXE project in Visual Basic. Save the empty project as allErrors.vbp to the same directory where you saved books.xml and books.xsd. Name the form file allErrors.frm.
- Create a reference to MSXML 5.0. To do this, select References... from the Project menu, then check the box for Microsoft XML, v50.
- Copy the Visual Basic code listing above, and paste it into the form_load subroutine.
- Execute the code by selecting Start from the Run menu.
- Verify that your output is the same as that listed in Output for the allErrors Example.
