トップ 戻る | XML hacks―エキスパートのためのデータ処理テクニック |
最近のWindows(IE)には、XMLパーサーMSXMLが標準で入っています。これは、COMになっているので、JScriptやVBScriptからも簡単に使うことができます。今回のようにブラウザ上で実行する場合は、IE専用になりますが、HTAやWSHなら「Windows対応」にできるでしょう。MSXMLでは、読み込みだけではなくXML文字列の作成もできますから、XMLベースのデータ処理プログラムをスクリプトベースのアプリケーションとして作成することも可能です。
今回は、以下のようなXMLファイルを読み込んで解析してみます。
jsxml.xml |
---|
<?xml version="1.0" encoding="Shift_JIS" ?> <lib> <soft> <name>0式調画機</name> <year>2000</year> </soft> <soft> <name>ドット絵でぃた</name> <year>1997</year> </soft> <soft> <name>2式視聴機</name> <year>2002</year> </soft> </lib> |
構造としては、ルートノードlibの下に子ノードsoftがいくつかぶら下がり、各softノードがnameとyearを持っている、というものですね。
このXMLファイルを、本HTMLファイルと同じディレクトリにおいて読み込んでみましょう。
まず、最初にMSXMLオブジェクトを作成します。
var doc = new ActiveXObject("Microsoft.XMLDOM");
そして、XMLを読み込む際、処理が終わるまで次の処理を行わない(同期的に読み込む)ようにするためにasyncプロパティをfalseにしてから、xmlをload()します。
doc.async = false; doc.load("jsxml.xml");
これで、XML文書が読み込まれたので、続いてDOMの各インターフェースでツリー構造をたどってノードを処理しましょう。
XMLからデータを取得 |
---|
// ルートlibの子ノード群(softノード群)取得 var lib = doc.documentElement.childNodes; var str = ""; // 各softノードを処理 for (i = 0;i < lib.length;i++) { // soft内のnameとyearノードの値を取得 name = lib.item(i).selectSingleNode("name").nodeTypedValue; year = lib.item(i).selectSingleNode("year").nodeTypedValue; // 取得した情報を文字列に保存 str = str + name + " - " + year + "\n"; } alert(str); |
以上の処理を実際に動かしてみます。
読み込みに続いて、今度はXMLを作ってみましょう。XMLを読み込む時は、まずルートを取得してその子ノードを辿って行きましたが、XMLを作る時もまずルートを作成し、そこに子ノードを追加していく形でやってみました。
XML文字列作成 |
---|
function test2() { var doc = new ActiveXObject("Microsoft.XMLDOM"); // ルート作成 var lib = doc.createElement("lib"); doc.appendChild(lib); // softノード作成 var soft = doc.createElement("soft"); // nameノード作成 var name = doc.createElement("name"); // nameノードにテキスト追加 name.appendChild(doc.createTextNode("BGM奏者")); // yearノード作成 var year = doc.createElement("year"); // yearノードにテキスト追加 year.appendChild(doc.createTextNode("1999")); // softにnameとyearを追加 soft.appendChild(name); soft.appendChild(year); // libにsoftを追加 lib.appendChild(soft); alert(doc.xml); } |
処理の流れは、単純な「要素の追加」の連続ですね。ツリー構造に沿って、親ノードを作成し、その下に追加する子ノードを作成して追加していく、という処理を繰り返して行けば、XMLの構造が作成され、その文字列を取得することができます。
HTAやWSHなら、このXML文字列をxml宣言とともにファイルに書き出せばXMLファイルを生成できるわけです。
トップ 戻る | 【楽天市場】PC市場 |