IXMLDOMParseError
Returns detailed information about the last parse error, including the error number, line number, character position, and a text description.
JScript Example
The following script example attempts to load an XML document. It then tests the errorCode
property of the IXMLDOMParseError
object to see if an error has occurred.
var xmlDoc = new ActiveXObject("Msxml2.DOMDocument.6.0");
xmlDoc.async = false;
xmlDoc.load("books.xml");
if (xmlDoc.parseError.errorCode != 0) {
WScript.Echo("A parse error occurred.");
} else {
WScript.Echo(xmlDoc.documentElement.xml);
}
C/C++ Example
The following C/C++ example reads a document with a missing end "TITLE" tag (in the second book) and displays the error.
#include “msxml6.h”
inline void TESTHR( HRESULT _hr )
{ if FAILED(_hr) _com_issue_error(_hr); }
void XMLDOMParserSample()
{
try
{
IXMLDOMDocumentPtr docPtr;
//init
TESTHR(CoInitialize(NULL));
TESTHR(docPtr.CreateInstance("Msxml2.DOMDocument.6.0"));
// load a document
_variant_t varXml("D:\\xmlSample\\xmlTest\\book.xml");
_variant_t varOut((bool)TRUE);
varOut = docPtr->load(varXml);
if ((bool)varOut == FALSE)
{
IXMLDOMParseErrorPtr errPtr = docPtr->GetparseError();
_bstr_t bstrErr(errPtr->reason);
printf("Error:\n");
printf("Code = 0x%x\n", errPtr->errorCode);
printf("Source = Line : %ld; Char : %ld\n", errPtr->line, errPtr->linepos);
printf("Error Description = %s\n", (char*)bstrErr);
}
else
{
printf("Load successful");
}
}
catch (_com_error &e)
{
printf("Error:\n");
printf("Code = %08lx\n", e.Error());
printf("Code meaning = %s\n", (char*) e.ErrorMessage());
printf("Source = %s\n", (char*) e.Source());
printf("Error Description = %s\n", (char*) e.Description());
}
catch(...)
{
printf("Unknown error!");
}
CoUninitialize();
}
XML Document
The example uses the following XML document.
<?xml version='1.0'?>
<COLLECTION
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<DATE dt:dt="datetime">1998-10-13T15:56:00</DATE>
<BOOK>
<TITLE>Lover Birds</TITLE>
<AUTHOR>Cynthia Randall</AUTHOR>
<PUBLISHER>Lucerne Publishing</PUBLISHER>
</BOOK>
<BOOK>
<TITLE>The Sundered Grail</TITLE>
<AUTHOR>Eva Corets</AUTHOR>
<PUBLISHER>Lucerne Publishing</PUBLISHER>
</BOOK>
<BOOK>
<TITLE>Splish Splash</TITLE>
<AUTHOR>Paula Thurman</AUTHOR>
<PUBLISHER>Scootney</PUBLISHER>
</BOOK>
</COLLECTION>
The example produces the following output.
Error:
Code = 0xc00ce56d
Source = Line : 14; Char : 5
Error Description = End tag 'BOOK' does not match the start tag 'TITLE'.
Requirements
Implementation:
msxml3.dll, msxml2.lib (MSXML 3.0)
msxml6.dll, msxml6.lib (MSXML 6.0)
Header and IDL files:
msxml2.h, msxml2.idl, msxml6.h, msxml6.idl
Versioning
Implemented in:
MSXML 3.0, MSXML 6.0