Coding With Fun
Home Docker Django Node.js Articles Python pip guide FAQ Policy

XML DOM parser error


May 27, 2021 XML DOM


Table of contents


XML DOM parser error


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


The parser error in Firefox

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

Unlike the Internet Explorer browser, if Firefox encounters an error, it loads into an XML document that contains the error description.

The name of the root node of the XML error document is "parserror". This is used to check for errors.


XML Errors (XML Error)

In the following code, we'll have the parser load a poorly formed XML document.

(You can read more about good and effective XML in our XML tutorial.)

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, "<");
document.write(errStr);
}
else
{
document.write("XML is valid");
}

Try it out . . .

View XML files: note_error.xml

Example explanation:

  1. Load the XML file
  2. Check if the node name of the root node is "parserror"
  3. Load the error string into the variable "errStr"
  4. Replace the character """

Note: In fact, only Internet Explorer checks your XML with DTD, and Firefox does not.


Cross-browser error checking

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

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 out . . .

View XML files: note_error.xml

Instance Interpretation - Internet Explorer:

  1. The first line creates an empty Microsoft XML document object.
  2. The second line closes the asynchronous load to ensure that the parser does not continue to execute the script until the document is fully loaded.
  3. The third line tells the parser to load an XML document note_error.xml "10,000 files."
  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 closes the asynchronous load to ensure that the parser does not continue to execute the script until the document is fully loaded.
  3. The third line tells the parser to load an XML document note_error.xml "10,000 files."
  4. If the returned document is an incorrect document, alert the error and exit the function.
  5. If not, the XML document is returned.