WSHの言語には、JScript(JavaScript)か、VBScriptが使えます。
拡張子を*.jsや*.vbsとすれば、クリックするだけで実行できます。
WSHは、コマンドプロンプトから、「wscript ファイル名」でも実行できます。
また、「cscript ファイル名」で実行することで、標準出力にも出力できます。
WSHは、Windows2000やWindows98では、デフォルトで組み込まれています。
また、Windows95やWindowsNTでも、Microsoft社から無料で提供されるモジュールをインストールすれば、使えるようになります。
当然かもしれませんが、Machintoshでは、使えません。
http://www.microsoft.com/japan/developer/scripting/ Microsoft Scripting Technologies(Microsoft社のページ) |
以下に、WSHを使ったDOMプログラミングのサンプルを示します。 これらのスクリプトはXMLデータとともに、ダウンロードしてから実行してください。
Vscript(JavaScript)を使って、住所録のデータを一人づつポップアップウィンドウに表示してみます。
addr.js |
---|
var objXML, fileXML; var nodes, node, items, item, mesg fileXML = 'addr.xml'; objXML = WScript.CreateObject('MSXML.DOMDocument'); objXML.load(fileXML); nodes = objXML.getElementsByTagName('個人情報'); for (i = 0; i < nodes.length; i++) { node = nodes[i]; mesg = ''; items = node.childNodes; for (j = 0; j < items.length; j++) { item = items[j]; if (mesg != '') { mesg = mesg + ', '; } mesg = mesg + item.nodeName + ':' + item.firstChild.nodeValue; } WScript.Echo(mesg); } |
まず、WScript.CreateObject
命令で、XML用のobjXML
オブジェクトを生成します。
XMLオブジェクトを生成したら、load
メソッドで、xmlファイルを読み込みます。
getElementsByTagName
メソッドで、XMLデータ内の「個人情報」タグを配列(nodes
)に取り出し、順に表示します。
各個人情報は、childNodes
メソッドで、要素の一覧を取り出し、nodeName
で、名前や住所などの要素名を表示し、firstChild.nodeValue
で、要素の内容を表示しています。
これは、各要素の子に「#text」タグしかないことを前提に、記述しています。
text
メソッドを使うと、より簡単に取り出せますが、Microsoft社の独自拡張メソッドですので、移植性に欠けます。
画面へのポップアップ表示は、WScript.Echo
メソッドを使って表示します。
各要素の内容をCSV形式にして表示しています。
addr.jsとaddr.xmlを同一ディレクトリに格納して、addr.jsを実行してください。
VBscriptを使って、住所録のデータを一人づつポップアップウィンドウに表示してみます。 上のJScriptを移植したもので、全く同じ動作をします。
addr.vbs |
---|
Dim objXML, fileXML Dim node, item, mesg fileXML = "addr.xml" Set objXML = WScript.CreateObject("MSXML.DOMDocument") objXML.load(fileXML) For Each node In objXML.getElementsByTagName("個人情報") mesg = "" id = node.getAttribute("ID") For Each item In node.childNodes If mesg <> "" Then mesg = mesg & ", " End If mesg = mesg & item.nodeName & ":" & item.firstChild.nodeValue Next WScript.Echo mesg Next |
プログラムの構造は、JScript版と全く同じです。
VBScript版では、配列データをFor Each
命令で、変数に取り出し、順に表示している点が異なります。
addr.vbsとaddr.xmlを同一ディレクトリに格納して、addr.vbsを実行してください。
上のサンプルスクリプトで使っている、住所録のXMLデータです。
2つのスクリプトで、XMLデータは共通です。
文字コードは、Unicodeではなく、Shift_JISで使ってください。
addr.xml |
---|
<?xml version="1.0" encoding="Shift_JIS" ?> <住所録> <個人情報 ID="1"> <名前>升村 丞</名前> <郵便番号>920-0967</郵便番号> <住所>金沢市菊川1-9-6</住所> <電話番号>076-261-4921</電話番号> </個人情報> <個人情報 ID="2"> <名前>北陸 太郎</名前> <郵便番号>920-0000</郵便番号> <住所>金沢市大手町1-1-1</住所> <電話番号>076-111-3333</電話番号> </個人情報> <個人情報 ID="3"> <名前>金沢 花子</名前> <郵便番号>920-0123</郵便番号> <住所>金沢市片町1-2-3</住所> <電話番号>076-123-4567</電話番号> </個人情報> </住所録> |