吉里吉里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)