いや、タイトルのマンマの内容なんだけど。かなり悩んだのでメモ。
XMLを処理するプログラムを書く必要が出来た。Perlで書こうかとも思ったが、家のPCだけでなく、某専門学校でも使える必要があったので、とりあえず、まず間違いなく現在動作しているWindows環境なら何処でも動くであろうWSHとMSXMLをチョイス。
さて、XMLの処理方法は主に2種類、DOM、SAXが有るが、今回は処理内容からSAXを選択。さて、どうやって使うのかな……と。検索、検索……
……………………………………………………………………………………
………………………………………………………………
…………………………………………
……………………(; ^ω^)ア、アレ……?
DOMのコードしか見つからない……?
どうにかこうにかMSXML2.SAXXMLReaderがパーサらしいということは分かった。
Class Handler
End Class
Dim parser
Set parser = CreateObject("MSXML.SAXXMLReader")
parser.contentHandler = New Handler '各ハンドラを実装したクラスオブジェクト
parser.parseURL("hoge.xml") ' パースするファイルのURL
……と言った感じのコードになるんだろう。多分。
早速適当にHandler実装して実行してみる。
C:\Documents and Settings\hoge\デスクトップ>cscript test.vbs Microsoft (R) Windows Script Host Version 5.6 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. C:\Documents and Settings\hoge\デスクトップ\test.vbs(6, 1) Microsoft VBScript 実 行時エラー: 型が一致しません。: 'contentHandler'
……………………あれ?
さらに良く調べてみると、サンプルプログラムJumpStart for Creating a SAX2 Applicationを発見。VB版(VBSに非ず)とC++版が有った。それぞれのプログラムを見てみると、どうやらcontentHandlerにはIVBSAXContentHandler(VB)或いはISAXContentHandler(C++)を継承したクラスオブジェクトを指定するらしい。
……………………って、継承!!?
WSHの言語(VBScript、JScript)って継承出来ないだろ!!?
さらにさらに調べてみると、ちょろちょろと発見。
- Google Groups: microsoft.public.scripting.vbscript
- Google Groups: microsoft.public.scripting.vbscript
- Google Groups: microsoft.public.xml.msxml-webrelease
here are some results from a Google search: http://tinyurl.com/drls So, most of these people are saying it can't be used in vbscript.
カンで翻訳すると、どうやら
てな感じの事を言っている模様。
うーん、出来ないのか……
どうしよう、DOM使うか……?いっそ徒のテキストとして処理すると言う手も有るか……


あんまり関係なくてごめんなさいね><;