當前位置:
首頁 > 知識 > XML DOM 解析器錯誤

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

實例解釋:

  1. 載入 XML 文件

  2. 檢查根節點的節點名稱是否是 "parsererror"

  3. 把錯誤字元串載入變數 "errStr"

  4. 在錯誤字元串編寫為 HTML 之前,把 "<" 字元替換為 "&lt;"

注意:實際上,只有 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 解析器錯誤

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

ionic 安裝
JSP 客戶端請求

TAG:程序員小新人學習 |