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
例の説明:
XML ファイルをロードします
ルートノードのノード名が「parsererror」であるかどうかを確認します
エラー文字列を変数 "errStr"
エラー文字列を 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:
最初の行は、空の Microsoft XML ドキュメント オブジェクトを作成します。
2 行目は非同期読み込みをオフにし、ドキュメントが完全に読み込まれるまでパーサーがスクリプトの実行を継続しないようにします。
3 行目は、「note_error.xml」という名前の XML ドキュメントをロードするようにパーサーに指示します。
parseError オブジェクトの ErrorCode プロパティが「0」以外の場合、エラーを警告して関数を終了します。
ErrorCodeプロパティが「0」の場合、XMLドキュメントを返します。
例の説明 - Firefox:
最初の行は、空の XML ドキュメント オブジェクトを作成します。
2 行目は非同期読み込みをオフにし、ドキュメントが完全に読み込まれるまでパーサーがスクリプトの実行を継続しないようにします。
3 行目は、「note_error.xml」という名前の XML ドキュメントをロードするようにパーサーに指示します。
返されたドキュメントが間違ったドキュメントである場合は、エラーを警告して関数を終了します。
そうでない場合は、XML ドキュメントを返します。