YouTip LogoYouTip

Dom Errors Crossbrowser

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");

 }

Try it Β»

View XML file: note_error.xml

Example explanation:

  1. Load XML file
  2. Check if the node name of the root node is "parsererror"
  3. Load the error string into variable "errStr"
  4. Replace the "<" character with "&lt;" 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);

 }

Try it Β»

View 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 to ensure the parser doesn't 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", alerts the error and exits the function.
  5. If the ErrorCode property is "0", returns the XML document.

Example explanation - Firefox:

  1. The first line creates an empty XML document object.
  2. The second line turns off asynchronous loading to ensure the parser doesn't 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, alerts the error and exits the function.
  5. If not, returns the XML document.
← Dom SummaryDom Errors β†’