XML DOM 解析器錯誤概述

大雄45發表於2022-06-05
導讀 當 Firefox 遇到解析器錯誤,它會載入一個包含錯誤的 XML 文件。

XML DOM 解析器錯誤概述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 文件。

原文來自:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2898790/,如需轉載,請註明出處,否則將追究法律責任。

相關文章