XML DOM Parser error


When Firefox encounters a parser error, it loads an XML document containing the error.


Parser errors in Firefox

A parser error may occur when you try to open an XML document.

Unlike Internet Explorer, if Firefox encounters an error, it loads an XML document containing the error description.

The root node of the XML error document is named "parsererror". This is used to check whether there is an error.


XML Error (XML Error)

In the code below, we will make the parser load a malformed XML document.

(You can on ourXML TutorialRead more about well-formed and valid XML in ...)

Example

xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async=false;
xmlDoc.load("note_error.xml");

if (xmlDoc.documentElement.nodeName=="parsererror")
{
errStr=xmlDoc.documentElement.childNodes[0].nodeValue;
errStr=errStr.replace(/</g, "&lt;");
document.write(errStr);
}
else
{
document.write("XML is valid");
}

Try it Yourself »

View the XML file:note_error.xml

Example explanation:

  1. Load the XML file
  2. Check whether the node name of the root node is "parsererror"
  3. Load the error string into the variable "errStr"
  4. Before the error string is written as HTML, replace the "<" character with "&lt;"

Note:Actually, only Internet Explorer uses a DTD to check your XML; Firefox does not.


Cross-browser error checking

Here, we created an XML loading function that checks for parser errors in Internet Explorer and Firefox:

Example

function loadXMLDocErr(dname)
{
try //Internet Explorer
{
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.load(dname);

if (xmlDoc.parseError.errorCode != 0)
{
alert("Error in line " + xmlDoc.parseError.line +
" position " + xmlDoc.parseError.linePos +
"nError Code: " + xmlDoc.parseError.errorCode +
"nError Reason: " + xmlDoc.parseError.reason +
"Error Line: " + xmlDoc.parseError.srcText);
return(null);
}
}
catch(e)
{
try //Firefox
{
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async=false;
xmlDoc.load(dname);
if (xmlDoc.documentElement.nodeName=="parsererror")
{
alert(xmlDoc.documentElement.childNodes[0].nodeValue);
return(null);
}
}
catch(e) {alert(e.message)}
}
try
{
return(xmlDoc);
}
catch(e) {alert(e.message)}
return(null);
}

Try it Yourself »

View the XML file:note_error.xml

Example explanation - Internet Explorer:

  1. The first line creates an empty Microsoft XML document object.
  2. The second line turns off asynchronous loading, ensuring that the parser will not continue executing scripts before the document is fully loaded.
  3. The third line tells the parser to load the XML document named "note_error.xml".
  4. If the ErrorCode property of the parseError object is different from "0", alert the error and exit the function.
  5. If the ErrorCode property is "0", return the XML document.

Example explanation - Firefox:

  1. The first line creates an empty XML document object.
  2. The second line turns off asynchronous loading, ensuring that the parser will not continue executing scripts before the document is fully loaded.
  3. The third line tells the parser to load the XML document named "note_error.xml".
  4. If the returned document is an error document, alert the error and exit the function.
  5. If not, return the XML document.

other extensions