XML DOM パース・エラー
Firefox がパース・エラーに直面したときは、エラーを含む XML 文書をロードします。
Firefoxのパース・エラー
XML文書を開こうとする時に、パースエラーは発生します。
Internet Explorerと異り、もしFirefoxがエラーに直面したときは、エラーとなった記述が含まれるXML文書をロードします。
XMLエラー文書のルートノード名は"parsererror"です。 これは、エラーがあるかどうかをチェックするために使用します。
XML エラー
以下のコードでは、非整形式のXML文書をパーサにロードします。
(整形式XML文書と妥当なXML文書については、XML tutorial を参照してください)
Example
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");
}
|
試してください »
|
XML ファイルを見てください: note_error.xml
例の説明:
- xmlファイルをロードします
- ルートノードのnodeNameが"parsererror"かどうかをチェックします
- 変数"errStr"にエラース文字列をロードします
- エラー文字列をHTMLとして書き出す前に"<"キャラクタを"<"に置き換えます
注: 実際、Internet ExplorerだけがDTDとXMLをチェックしますが、Firefoxはチェックしません。
クロスブラウザ・エラーチェック
ここに、Internet Explorer と Firefox の双方でパース・エラーがないかどうかをチェックする
XML ロード関数を作成してあります:
Example
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:
- 最初の行は、空のマイクロソフトXML文書オブジェクトを作成します
- 2行目は、文書が完全にロードされる前に、パーサがスクリプトの実行を続行しないことを確実にするために非同期のローディングをオフにします
- 3行目は、パーサに、"note_error.xml"と呼ばれるXML文書をロードするように命じます
- もしparseErrorオブジェクトのerrorCodeプロパティが"0"でなければ、エラー警告を出し関数を終了します
- もしerrorCodeプロパティが"0"であれば、XML文書を返します
例の説明 - Firefox:
- 最初の行は、空のXML文書オブジェクトを作成します
- 2行目は、文書が完全にロードされる前に、パーサがスクリプトの実行を続行しないことを確実にするために非同期のローディングをオフにします
- 3行目は、パーサに、"note_error.xml"と呼ばれるXML文書をロードするように命じます
- もしリターン文書がエラー文書であれば、エラー警告を出し関数を終了します
- そうでなければ、XML文書を返します
|