nlib
nn::nlib::TaggedTextParser クラスfinal

XML風タグ付きテキストをパースする簡単なパーサーです。 [詳解]

#include "nn/nlib/TaggedTextParser.h"

公開メンバ関数

 TaggedTextParser (char *tagged_text)
 コンストラクタです。 [詳解]
 
const char * GetText () const
 GetNext()で取得した文字データへのポインタを返します。 [詳解]
 
Event Next ()
 次の要素やテキストを取得します。 [詳解]
 

詳解

XML風タグ付きテキストをパースする簡単なパーサーです。

説明
タグ付きのテキストをパースすることができます。 正しいことが保証されている簡単な設定ファイル等の情報を読み込む用途に適しています。
オブジェクトを構築した後、Next()関数でパースを進め、GetText()関数で要素名やテキストを取得することができます。
TaggedTextParserには以下のような特徴があります。
  • 実装が非常にコンパクトで、200行程度のヘッダファイルのみに記述されています。
  • メモリ上の入力テキストを書き換えながら動作します。そのため追加のメモリが必要ありません。
  • PULL型パーサーのためSAX形式のパーサーよりコーディングが簡単です。
  • DOMのようなデータを構築しないので高速です。
また、以下の点に注意してください。
  • XML宣言, PI, コメントに相当する部分は読み飛ばしますが、複雑なテキストの場合は失敗することがあります。
  • XMLの属性に相当する部分は読み飛ばされます。
  • エスケープ等には対応していません。
  • 文法チェックはほぼ行われません。
仕様の詳細についてはヘッダファイルの実装を参照してください。
// 文字列を書き換えるのでconst charにすることはできない。
char text[] = "<doc > my text </toc >";
TaggedTextParser parser(text);
parser.Next(); // TaggedTextParser::kStartElement
parser.GetText(); // "doc"
parser.Next(); // TaggedTextParser::kCharacters
parser.GetText(); // "my text"
parser.Next(); // TaggedTextParser::kEndElement
parser.GetText(); // "toc"
parser.Next(); // TaggedTextParser::kEndDocument

TaggedTextParser.h23 行目に定義があります。

構築子と解体子

◆ TaggedTextParser()

nn::nlib::TaggedTextParser::TaggedTextParser ( char *  tagged_text)
inlineexplicit

コンストラクタです。

引数
[in,out]tagged_textパースされる文字列
説明
入力テキストはパース中に書き換えられることに注意してください。

TaggedTextParser.h39 行目に定義があります。

関数詳解

◆ GetText()

nn::nlib::TaggedTextParser::GetText ( ) const
inline

GetNext()で取得した文字データへのポインタを返します。

戻り値
取得した文字列(要素名及び文字データ)
説明
ポインタは入力テキスト内へのポインタであることに注意してください。 また、文字データの場合は前後の空白が取り除かれたテキストを返します。

TaggedTextParser.h47 行目に定義があります。

◆ Next()

nn::nlib::TaggedTextParser::Next ( )
inline

次の要素やテキストを取得します。

戻り値
TaggedTextParser::kStartElement開始タグの場合
TaggedTextParser::kEndElement終了タグの場合
TaggedTextParser::kCharacters文字データの場合
TaggedTextParser::kEndDocumentドキュメントが終了した場合
TaggedTextParser::kSyntaxErrorエラーに遭遇した場合

TaggedTextParser.h52 行目に定義があります。


このクラス詳解は次のファイルから抽出されました: