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:
-
Load the XML file
-
Check if the node name of the root node is "parserror"
-
Load the error string into the variable "errStr"
-
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:
-
The first line creates an empty Microsoft XML document object.
-
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.
-
The third line tells the parser to load an XML document note_error.xml "10,000 files."
-
If the ErrorCode property of the parseError object is different from "0", alert the error and exit the function.
-
If the ErrorCode property is "0," return the XML document.
Example Explanation - Firefox:
-
The first line creates an empty XML document object.
-
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.
-
The third line tells the parser to load an XML document note_error.xml "10,000 files."
-
If the returned document is an incorrect document, alert the error and exit the function.
-
If not, the XML document is returned.