概要

吉里吉里の拡張ライブラリのひとつにKTLがあります。
ここではKTLのPtreeクラスを使用して、簡単なXMLファイルを読み込む手順を説明します。
KKDE(Kiri Kiri Development Environment) ver 2.0.0で確認しました。

1. KTLのPTreeとは?

【以下KTL本家より引用】
> ◇ KTL (KiriKiri Trivial Library)
> ◇ スクリプト言語 TJS2 の実行エンジン 吉里吉里2 のための拡張機能ライブラリ。
> ◇ 主に KAG に依存しない、様々なスクリプトのための汎用機能の実装を目的としている。
http://www.boleros.x0.com/doc/ktlwiki/index.php?KTLWiki

Bolero MURAKAMI氏の著作物です。 詳細や利用の注意点などは下記を参照してください。 http://www.boleros.x0.com/doc/ktlwiki/index.php?KTLWiki#copyrights-

PTree クラス
構造化データの読み書きや操作を行うクラス。XML, JSON, INFO, YAML, HTML(読込のみ) 形式に対応。
http://www.boleros.x0.com/doc/ktlwiki/index.php?ktl%2FPTree.tjs

2. PTreeを使ってみる


以下に、簡単なサンプルと、導入手順を説明します。

KKDEで、「ファイル→新規作成→プロジェクト作成」をクリックします。プロジェクトの種類として
「KAG3プロジェクト」、名前は適当に「readxmltest」、パスはどこでもよいです。
指定したパスにフォルダが生成されていることを確認します。

下記URLに従って、必要ファイルをダウンロードして、プロジェクトに追加します。
http://www.boleros.x0.com/doc/ktlwiki/index.php?forum%2F%C6%B3%C6%FE%BC%EA%BD%E7

読み込みたいxmlファイルを用意します。
ここではサンプルとして下記のようなxmlファイルを用意し、
readxmltest/others/sample.xml に保存します。
保存するとき、エンコードはUTF-8を指定します。

sample.xml
<?xml version="1.0" encoding="utf-8" ?>
<data>
	<enemy>
		<img file="slime01"/>
		スライム。ぶよぶよ。
	</enemy>
	<enemy>
		<img file="gobline01"/>
		ゴブリン。むんむん。
	</enemy>
</data>
エネミー一覧のようなデータを想定したサンプルとなっています。
enemyタグごとに、画像を現すimgタグと、説明を表すテキスト部分があります。

KKDEに戻り、startup.tjsに処理を記述していきます。

startup.tjs
// startup.tjs - スタートアップスクリプト

Scripts.execStorage("ktl/PTree.tjs");
var ptree = new PTree();
ptree.readStorageXML("others/sample.xml", "UTF-8", PTree.pfXMLTrimWhitespace);

Scripts.execStorage("system/Initialize.tjs");
readStorageXMLコマンドで、文字コードや読み込みオプションも指定することができます。
読み込んだ結果はptree変数に格納されています。

first.ksを開き、読み込み結果を表示するように修正します。

first.ks
[wait time=200]
XML読み込みテスト[r]

[r]
[emb exp="ptree.get('data.enemy#0')"][r]
[emb exp="ptree.get('data.enemy#0.img.<xmlattr>.file')"][r]
[emb exp="ptree.get('data.enemy#1')"][r]
[emb exp="ptree.get('data.enemy#1.img.<xmlattr>.file')"][r]
getの書き方に少しクセがありますが、詳しくは本家のドキュメントを参照ください。基本的には [タグ名].[タグ名]... 
http://www.boleros.x0.com/doc/ktlwiki/index.php?example%2FXML%C6%C9%A4%DF%B9%FE%A4%DF#qed635a8

結果はこちら

3. その他のメソッド

KTLはドキュメントがしっかりしてるので助かります(笑)
XMLのほかにもJSON,INFO,YAML形式に対応しているようです。 詳しくは下記を参照ください。
http://www.boleros.x0.com/doc/ktlwiki/index.php?ktl%2FPTree.tjs#PTree-get