XML DOM tutoria...login
XML DOM tutorial
author:php.cn  update time:2022-04-13 15:27:56

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:

  1. Load XML file

  2. Check whether the node name of the root node is "parsererror"

  3. Put the error string Load the variable "errStr"

  4. Replace the "<" characters with "<"

## before writing the error string into HTML

# Note: Actually, only Internet Explorer will check your XML with DTD, Firefox will not.


Cross-browser error checking

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

Instance

<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:

  1. The first line creates an empty Microsoft XML document object.

  2. The second line turns off asynchronous loading, ensuring that the parser does not continue executing the script until the document is fully loaded.

  3. The third line tells the parser to load an XML document named "note_error.xml".

  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.

Explanation of examples - Firefox:

  1. The first line creates an empty XML document object.

  2. The second line turns off asynchronous loading, ensuring that the parser does not continue executing the script until the document is fully loaded.

  3. The third line tells the parser to load an XML document named "note_error.xml".

  4. If the returned document is an incorrect document, alert the error and exit the function.

  5. If not, an XML document is returned.