阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

XML DOM 解析器错误概述

67次阅读
没有评论

共计 1813 个字符,预计需要花费 5 分钟才能阅读完成。

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

XML DOM 解析器错误概述

在 Firefox 中的解析器错误

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

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

XML 错误文档的根节点的名称是 “parsererror”。这是用来检查是否有错误。

XML 错误(XML Error)

在下面的代码中,我们会让解析器加载一个形式不良的 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"); }

实例解释:

  1. 加载 XML 文件
  2. 检查根节点的节点名称是否是 “parsererror”
  3. 把错误字符串载入变量 “errStr”
  4. 在错误字符串编写为 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);
}

实例解释 – 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 文档。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1813字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中