吉里吉里プラグインに関するメモ/expat.dll

Last-modified: 2016-02-19 (金) 13:20:53

吉里吉里2 version 2.27-dev.20060527で追加されたexpat.dllに関するメモ。

XMLParserクラス

コンストラクタ

XMLParser.XMLParser

機能/意味
XMLParserオブジェクトの構築
タイプ
XMLParserクラスのコンストラクタ
構文
XMLParser(target = void)
引数
target…イベントの転送先オブジェクト。未指定時は自分自身に送る
戻り値
なし(void)
説明
XMLParserオブジェクトを構築する

メソッド

XMLParser.parse

機能/意味
処理対象テキストのパース処理を行う
タイプ
XMLParserクラスのメソッド
構文
parse(text))
引数
text…処理対象テキスト
戻り値
処理結果(真:正常終了/偽:エラー終了)
説明
処理対象テキストをパースし、各種イベントを発生させる

XMLParser.parseStorage

機能/意味
XMLファイルのパース処理を行う
タイプ
XMLParserクラスのメソッド
構文
parseStorage(filename))
引数
filename…パース対象のXMLファイル名
戻り値
処理結果(真:正常終了/偽:エラー終了)
説明
XMLファイルをパースし、各種イベントを発生させる

プロパティ

XMLParser.errorCode

機能/意味
エラーコード
タイプ
XMLParserクラスのプロパティ(読み出し専用)
説明
XMLParserクラス内で発生したエラーコードを返す。正常終了時は0

XMLParser.errorString

XMLParser.currentByteIndex

XMLParser.currentLineNumber

XMLParser.currentColumnNumber

XMLParser.currentByteCount

イベント

parse(), parseStorage()メソッドから呼び出されるイベントハンドラ。

XMLParser.startElement

機能/意味
XML開始タグを見つけた
タイプ
XMLParserクラスのイベント
構文
startElement(name, dict))
引数
name…見つけたタグ名
dict…属性名をキー、属性値を値とする辞書配列オブジェクト
説明
XML開始タグを見つけたときに呼び出されるイベントハンドラ

XMLParser.endElement

機能/意味
XML終了タグを見つけた
タイプ
XMLParserクラスのイベント
構文
endElement(name)
引数
name…見つけたタグ名
説明
XML終了タグを見つけたときに呼び出されるイベントハンドラ

XMLParser.characterData

機能/意味
マークアップされていない文字列を見つけた
タイプ
XMLParserクラスのイベント
構文
characterData(str)
引数
str…見つけた文字列
説明
‐マークアップされていない文字列を見つけたときに呼び出されるイベントハンドラ
‐インデントなどで使う改行、タブ、空白を見つけたときも、このイベントハンドラが呼び出されるので注意

XMLParser.processingInstruction

XMLParser.comment

機能/意味
コメントを見つけた
タイプ
XMLParserクラスのイベント
構文
comment(str)
引数
str…見つけたコメント
説明
コメントを見つけたときに呼び出されるイベントハンドラ

XMLParser.startCdataSection

XMLParser.endCdataSection

XMLParser.defaultHandler

XMLParser.defaultHandlerEx

サンプルコード

csvParser.dllも参照のこと。

// XMLファイルを読み込み、ノードと属性、文字列を次々に表示していくサンプル
Plugins.link("expat.dll");
class EventTarget {
  var reg;
  function EventTarget() {
    reg = /[\t\n]+/g;  // タブや改行の羅列を検出するための正規表現オブジェクト
  }
  function finalize() {
    invalidate reg;
  }
  // XML開始タグを読み込んだら呼び出されるハンドラ
  function startElement(name, dic) {
    var arr = new Array();
    arr.assign(dic);
    System.inform("ELEMENT: "+name+" / ATTRIBUTE: "+arr.join(", "));
    invalidate arr;
  }
  // マークアップされていない箇所を読み込んだら呼び出されるハンドラ
  function characterData(data) {
    if (!reg.test(data))  // 改行やタブなどのゴミデータ以外を出力
      System.inform("TEXT: "+data);
  }
}
var ev = new EventTarget();
var xml = new XMLParser(ev);
xml.parseStorage("data.xml");  // XMLファイルの文字コードはUnicode(UTF-8エンコーディング)を推奨
invalidate xml;
invalidate ev;

備考

  • マニュアルらしいマニュアルはないため、プラグインのソースコードを追うしかない。
    Perl/Pythonなどで実装されているExpatのヘルプを参照した方が早く理解できる
  • 処理可能な文字コードはUS-ASCII、Unicode(UTF-8およびUTF-16エンコーディング)、ISO-8859-1(Latin-1)