Tutorial XML DO...login
Tutorial XML DOM
pengarang:php.cn  masa kemas kini:2022-04-13 15:27:56

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:

  1. Muatkan fail XML

  2. Semak sama ada nama nod nod akar ialah "parsererror"

  3. Letakkan rentetan ralat Muatkan pembolehubah "errStr"

  4. 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:

  1. Barisan pertama mencipta objek dokumen Microsoft XML kosong.

  2. Barisan kedua mematikan pemuatan tak segerak, memastikan penghurai tidak terus melaksanakan skrip sehingga dokumen dimuatkan sepenuhnya.

  3. Barisan ketiga memberitahu penghurai untuk memuatkan dokumen XML bernama "note_error.xml".

  4. Jika sifat ErrorCode objek parseError berbeza daripada "0", maklumkan ralat dan keluar dari fungsi.

  5. Jika sifat ErrorCode ialah "0", kembalikan dokumen XML.

Contoh penjelasan - Firefox:

  1. Barisan pertama mencipta objek dokumen XML kosong.

  2. Barisan kedua mematikan pemuatan tak segerak, memastikan penghurai tidak terus melaksanakan skrip sehingga dokumen dimuatkan sepenuhnya.

  3. Barisan ketiga memberitahu penghurai untuk memuatkan dokumen XML bernama "note_error.xml".

  4. Jika dokumen yang dikembalikan adalah dokumen yang salah, maklumkan ralat dan keluar dari fungsi tersebut.

  5. Jika tidak, mengembalikan dokumen XML.


Laman web PHP Cina