以前、Msxml2.DOMDocumentを使ってVBScriptでXMLファイルを読み込む - 大人になったら肺呼吸 というエントリを書きました。
このとき、Msxml2.DOMDocumentのloadメソッドのエラー処理を以下のように書いていましたが、これではうまくエラー処理ができないことが分かりました。
' XMLファイルの読み込み objXml.Load(xmlFile) If Err.Number <> 0 Then WScript.Echo Err.Number WScript.Echo Err.Source WScript.Echo Err.Description WScript.Quit End If
loadメソッドのエラー処理
loadメソッドでエラーが発生するパターンとしては、以下のパターンが考えられます。
- ファイルが存在しない
- ファイルがxmlとして正しい形式になっていない
ファイルが存在するかどうかは、FileSystemObjectを使えば調べることができます。次にxmlとして正しい形式になっていないファイルの場合ですが、このようなファイルをloadメソッドで読み込んだ場合、エラーが発生します。xmlファイルの解析処理でのエラーは、以下のように検出します。
2010.07.01追記
戻り値がtrueかfalseかでパースエラーが発生したかどうかを判断できるようです。
' XMLファイルの読み込み Dim result result = objXml.Load(xmlFile) If Not result Then WScript.Echo objXml.parseError.errorCode WScript.Echo objXml.parseError.reason WScript.Echo objXml.parseError.line WScript.Echo objXml.parseError.linepos WScript.Echo objXml.parseError.filepos WScript.Echo objXml.parseError.srcText WScript.Echo objXml.parseError.url WScript.Quit End If
parseErrorというオブジェクトにエラーコードやエラーの内容などが格納されているので、そちらを参照するようにします。parseErrorについては、以下のサイトが参考になります。
■ParseErrorオブジェクトのプロパティ
errorCode・・・エラー番号
reason・・・エラーの原因
line・・・エラーが生じたXML文書の行番号
linepos・・・エラーが生じたXML文書の行の、行頭からの位置
filepos・・・エラーが生じたファイルの先頭からの位置
srcText・・・エラーが生じた行の内容
url・・・エラーが生じたXML文書のURL
読み込みエラー内容の表示