Microsoft独自仕様だが、ParseErrorオブジェクトを利用すればXML文書のロード、解析時のエラー内容を取得できる。
■ParseErrorオブジェクトのプロパティ
errorCode・・・エラー番号
reason・・・エラーの原因
line・・・エラーが生じたXML文書の行番号
linepos・・・エラーが生じたXML文書の行の、行頭からの位置
filepos・・・エラーが生じたファイルの先頭からの位置
srcText・・・エラーが生じた行の内容
url・・・エラーが生じたXML文書のURL
[サンプルXML文書を表示](下のフレームに)
XMLソース
<SCRIPT language="JavaScript"><!--
function test1(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
result = xmlobj.load("er01.xml"); //ファイル名が不正
if(result) alert(xmlobj.xml);
else {
msg = "XML文書でエラーが生じました。エラー内容は" + "\n" + "\n\t" +
"エラー番号:" + xmlobj.parseError.errorCode + "\n\t" +
"エラーの原因は:" + xmlobj.parseError.reason + "\n\t" +
"エラーの行番号は:" + xmlobj.parseError.line + "\n\t" +
"エラー位置は行の先頭から:" + xmlobj.parseError.linepos + "\n\t" +
"エラー位置はファイルの先頭から:" + xmlobj.parseError.filepos + "\n\t +
"エラー行の内容は:" + xmlobj.parseError.srcText + "\n\t" +
"エラーが生じたXML文書のURLは:" + xmlobj.parseError.url;
alert(msg);
}
}
function test2(){
var xmlobj=new ActiveXObject("MSXML2.DOMDocument");
xmlobj.async=false;
result = xmlobj.load("error01.xml");
if(result) alert(xmlobj.xml);
else {
msg = "XML文書でエラーが生じました。エラー内容は" + "\n" + "\n\t" +
"エラー番号:" + xmlobj.parseError.errorCode + "\n\t" +
"エラーの原因は:" + xmlobj.parseError.reason + "\n\t" +
"エラーの行番号は:" + xmlobj.parseError.line + "\n\t" +
"エラー位置は行の先頭から:" + xmlobj.parseError.linepos + "\n\t" +
"エラー位置はファイルの先頭から:" + xmlobj.parseError.filepos + "\n\t +
"エラー行の内容は:" + xmlobj.parseError.srcText + "\n\t" +
"エラーが生じたXML文書のURLは:" + xmlobj.parseError.url;
alert(msg);
}
}
//--></SCRIPT>
</HEAD>
<BODY>
<P>指定したXML文書が存在しない、又はパス名が間違っていた場合の <button onclick="test1()"> エラー内容を表示</button>する。</P>
<P>読み込むXML文書の内容に間違いがある場合の <button onclick="test2()"> エラー内容を表示</button>する。</P>
XMLソース
<?xml version="1.0" encoding="Shift_JIS" ?>
<家系>
<title>タイトル</titl>
<叔父>叔父さん</叔父>
<親>お父さんお母さん
<姉>お姉さん</姉>
<私>おいら</私>
</親>
<end>以上です(2004/4/19)</end>
</家系>
end(04/4/19)