XML DOM Parser Errors |
When Firefox encounters a parser error, it loads an XML document containing the error.
Parser Errors in Firefox
A parser error can occur when you try to open an XML document.
Unlike Internet Explorer, if Firefox encounters an error, it loads an XML document containing an error description.
The name of the root node of the XML error document is "parsererror". This is used to check whether there are errors.
XML Error
In the following code, we will let the parser load a malformed XML document.
(You can read more about well-formed and valid XML in our XML Tutorial.)
Example
xmlDoc=document.implementation.createDocument("","",null);
xmlDoc.async=false;
xmlDoc.load("note_error.xml");
if (xmlDoc.documentElement.nodeName=="parsererror")
{
errStr=xmlDoc.documentElement.childNodes.nodeValue;
errStr=errStr.replace(/</g, "<");
document.write(errStr);
}
else
{
document.write("XML is valid");
}
View XML file: note_error.xml
Example explanation:
- Load XML file
- Check if the node name of the root node is "parsererror"
- Load the error string into variable "errStr"
- Replace the "<" character with "<" before writing the error string as HTML
Note: In fact, only Internet Explorer checks your XML with DTD, Firefox does not.
Cross-browser Error Checking
Here we create an XML loading function that checks for parser errors in both 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 +
"nError 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.nodeValue);
return(null);
}
}
catch(e) {alert(e.message)}
}
try
{
return(xmlDoc);
}
catch(e) {alert(e.message)}
return(null);
}
View XML file: note_error.xml
Example explanation - Internet Explorer:
- The first line creates an empty Microsoft XML document object.
- The second line turns off asynchronous loading to ensure the parser doesn't continue executing scripts before the document is fully loaded.
- The third line tells the parser to load the XML document named "note_error.xml".
- If the ErrorCode property of the parseError object is different from "0", alerts the error and exits the function.
- If the ErrorCode property is "0", returns the XML document.
Example explanation - Firefox:
- The first line creates an empty XML document object.
- The second line turns off asynchronous loading to ensure the parser doesn't continue executing scripts before the document is fully loaded.
- The third line tells the parser to load the XML document named "note_error.xml".
- If the returned document is an error document, alerts the error and exits the function.
- If not, returns the XML document.
YouTip