XML DOM チュートリアルlogin
XML DOM チュートリアル
著者:php.cn  更新時間:2022-04-13 15:27:56

DOMパーサーエラー


XML DOM パーサーエラー


Firefox でパーサー エラーが発生すると、エラーを含む XML ドキュメントがロードされます。


Firefox のパーサー エラー

XML ドキュメントを開こうとすると、パーサー エラーが発生することがあります。

Internet Explorer とは異なり、Firefox でエラーが発生すると、エラーの説明を含む XML ドキュメントがロードされます。

XMLエラー文書のルートノードの名前は「parsererror」です。これはエラーをチェックするために使用されます。


XML エラー

以下のコードでは、パーサーに不正な形式の XML ドキュメントをロードするように依頼しています。

(整形式で有効な XML については、XML チュートリアルで詳しく読むことができます。)

<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>

インスタンスの実行»

オンラインの例を表示するには、[インスタンスの実行] ボタンをクリックしてください

XML ファイルを表示します: note_error.xml

例の説明:

  1. XML ファイルをロードします

  2. ルートノードのノード名が「parsererror」であるかどうかを確認します

  3. エラー文字列を変数 "errStr"

  4. エラー文字列を HTML に書き込む前に、"<" 文字を "<" に置き換えてください

注: 実際には、DTD と Firefox で XML をチェックするのは Internet Explorer のみですしない。


クロスブラウザエラーチェック

ここでは、Internet Explorer と Firefox のパーサーエラーをチェックする XML 読み込み関数を作成します:

<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>

サンプルを実行»

「インスタンスを実行」ボタンをクリックして、オンラインインスタンスを見る

XML ファイルの表示: note_error.xml

例の説明 - Internet Explorer:

  1. 最初の行は、空の Microsoft XML ドキュメント オブジェクトを作成します。

  2. 2 行目は非同期読み込みをオフにし、ドキュメントが完全に読み込まれるまでパーサーがスクリプトの実行を継続しないようにします。

  3. 3 行目は、「note_error.xml」という名前の XML ドキュメントをロードするようにパーサーに指示します。

  4. parseError オブジェクトの ErrorCode プロパティが「0」以外の場合、エラーを警告して関数を終了します。

  5. ErrorCodeプロパティが「0」の場合、XMLドキュメントを返します。

例の説明 - Firefox:

  1. 最初の行は、空の XML ドキュメント オブジェクトを作成します。

  2. 2 行目は非同期読み込みをオフにし、ドキュメントが完全に読み込まれるまでパーサーがスクリプトの実行を継続しないようにします。

  3. 3 行目は、「note_error.xml」という名前の XML ドキュメントをロードするようにパーサーに指示します。

  4. 返されたドキュメントが間違ったドキュメントである場合は、エラーを警告して関数を終了します。

  5. そうでない場合は、XML ドキュメントを返します。


PHP中国語ウェブサイト