Ralat penghurai DOM
XML DOM Ralat Penghurai
Apabila Firefox menghadapi ralat penghurai, ia memuatkan dokumen XML yang mengandungi ralat itu.
Ralat Penghurai dalam Firefox
Ralat penghurai boleh berlaku apabila anda cuba membuka dokumen XML.
Tidak seperti Internet Explorer, jika Firefox menghadapi ralat, ia memuatkan dokumen XML yang mengandungi perihalan ralat.
Nama nod akar dokumen ralat XML ialah "parsererror". Ini digunakan untuk menyemak ralat.
Ralat XML
Dalam kod berikut, kami meminta penghurai untuk memuatkan dokumen XML yang tidak betul.
(Anda boleh membaca lebih lanjut tentang XML yang dibentuk dengan baik dan sah dalam tutorial XML kami.)
Contoh
<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>
Jalankan Instance»
Klik butang "Run Instance" untuk melihat contoh dalam talian
Lihat fail XML: note_error.xml
Penjelasan contoh:
Muatkan fail XML
Semak sama ada nama nod nod akar ialah "parsererror"
Letakkan rentetan ralat Muatkan pembolehubah "errStr"
Sebelum menulis rentetan ralat ke dalam HTML, gantikan aksara "<" dengan "<"
Nota: Malah, hanya Internet Explorer akan menyemak XML anda dengan DTD, Firefox tidak.
Semakan ralat merentas pelayar
Di sini kami mencipta fungsi pemuatan XML yang menyemak ralat penghurai dalam Internet Explorer dan 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>
Jalankan contoh»
Klik butang "Jalankan contoh" untuk melihat contoh dalam talian
Lihat fail XML: note_error.xml
Penjelasan contoh - Internet Explorer:
Barisan pertama mencipta objek dokumen Microsoft XML kosong.
Barisan kedua mematikan pemuatan tak segerak, memastikan penghurai tidak terus melaksanakan skrip sehingga dokumen dimuatkan sepenuhnya.
Barisan ketiga memberitahu penghurai untuk memuatkan dokumen XML bernama "note_error.xml".
Jika sifat ErrorCode objek parseError berbeza daripada "0", maklumkan ralat dan keluar dari fungsi.
Jika sifat ErrorCode ialah "0", kembalikan dokumen XML.
Contoh penjelasan - Firefox:
Barisan pertama mencipta objek dokumen XML kosong.
Barisan kedua mematikan pemuatan tak segerak, memastikan penghurai tidak terus melaksanakan skrip sehingga dokumen dimuatkan sepenuhnya.
Barisan ketiga memberitahu penghurai untuk memuatkan dokumen XML bernama "note_error.xml".
Jika dokumen yang dikembalikan adalah dokumen yang salah, maklumkan ralat dan keluar dari fungsi tersebut.
Jika tidak, mengembalikan dokumen XML.