DOM parser error
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 the Internet Explorer browser, if Firefox encounters an error, it loads an XML document containing a description of the error.
The name of the root node of the XML error document is "parsererror". This is used to check for errors.
XML Error
In the following code, we ask the parser to load a malformed XML document.
(You can read more about well-formed and valid XML in our XML tutorial.)
Example
<html> <body> <script> 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"); } </script> </body> </html>
Run Example»
Click the "Run Example" button to view the online instance
View the XML file: note_error.xml
Explanation of the example:
Load XML file
Check whether the node name of the root node is "parsererror"
Put the error string Load the variable "errStr"
Replace the "<" characters with "<"
# Note: Actually, only Internet Explorer will check your XML with DTD, Firefox will not.
Cross-browser error checkingHere we create an XML loading function that checks for parser errors in Internet Explorer and Firefox:
<html> <head> <script> 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); } </script> </head> <body> <script> xmlDoc=loadXMLDocErr("note_error.xml"); </script> </body> </html>
Run Instance»Click the "Run Instance" button to view the online instance
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, ensuring that the parser does not continue executing the script until the document is fully loaded.
The third line tells the parser to load an XML document named "note_error.xml".
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.
Explanation of examples - Firefox:
The first line creates an empty XML document object.
The second line turns off asynchronous loading, ensuring that the parser does not continue executing the script until the document is fully loaded.
The third line tells the parser to load an XML document named "note_error.xml".
If the returned document is an incorrect document, alert the error and exit the function.
If not, an XML document is returned.