XML DOM 解析器错误

当 Firefox 遇到解析器错误,它会载入一个包含错误的 XML 文档

在 Firefox 中的解析器错误

当我们试图打开一个 XML 文档时,就可能发生一个解析器错误(parser-error)

与 Internet Explorer 浏览器不同,如果 Firefox 遇到错误,它会载入包含错误描述的 XML 文档中

XML 错误文档的根节点的名称是 "parsererror"

这是用来检查是否有错误

XML 错误(XML Error)

下面的代码,我们的解析器会加载一个形式不良的 XML 文档

你可以访问我们的 XML 基础教程阅读更多有关形式良好且有效的 XML

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, "&lt;");
document.write(errStr);
}
else
{
document.write("XML is valid");
}

运行范例 »

查看 XML 文件: note_error.xml

  • 加载 XML 文件
  • 检查根节点的节点名称是否是 "parsererror"
  • 把错误字符串载入变量 "errStr"
  • 在错误字符串编写为 HTML 之前,把 "<" 字符替换为 "<"

注意: 实际上,只有 Internet Explorer 会用 DTD 检查您的 XML,Firefox 不会

跨浏览器的错误检查

在这里,我们创建了一个 XML 加载函数,在 Internet Explorer 和 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);
}

运行范例 »

查看 XML 文件: note_error.xml

在 Internet Explorer 中

  1. 第一行创建一个空的微软 XML 文档对象
  2. 第二行关闭异步加载,确保在文档完全加载之前解析器不会继续执行脚本
  3. 第三行告知解析器加载名为 "note_error.xml" 的 XML 文档
  4. 如果 parseError 对象的 ErrorCode 属性和 "0" 不同,提醒错误并退出函数
  5. 如果 ErrorCode 属性为 "0",返回 XML 文档

Firefox

  1. 第一行创建一个空的XML文档对象
  2. 第二行关闭异步加载,确保在文档完全加载之前解析器不会继续执行脚本
  3. 第三行告知解析器加载名为 "note_error.xml" 的 XML 文档
  4. 如果返回的文档是一个错误的文档,提醒错误并退出函数
  5. 如果没有,则返回 XML 文档

XML DOM 基础教程

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.