nlib
nn::nlib::exi::XmlStreamReader クラスabstract

XMLストリームからの読み出しを行う抽象クラスです。 [詳解]

#include "nn/nlib/exi/XmlStreamReader.h"

公開型

enum  XmlStreamConstants {
  NONE = -1,
  START_ELEMENT = 1,
  END_ELEMENT = 2,
  PROCESSING_INSTRUCTION = 3,
  CHARACTERS = 4,
  COMMENT = 5,
  START_DOCUMENT = 7,
  END_DOCUMENT = 8,
  CDATA = 12
}
 XMLストリームの読み込みで発生したXMLストリームイベントの値です。 [詳解]
 

公開メンバ関数

const ExiCharGetElementText () noexcept
 連続したテキストイベントを読み込んで1つのテキストを返します。 [詳解]
 
const ExiCharGetLocalName () noexcept
 ローカル名を取得します。 [詳解]
 
const ExiCharGetNamespaceUri () noexcept
 XML名前空間のURIを取得します。 [詳解]
 
const ExiCharGetPrefix () noexcept
 XMLの名前空間プレフィックスを取得します。 [詳解]
 
const ExiCharGetText () noexcept
 テキストデータを取得します。 [詳解]
 
XmlStreamConstants GetEventType () const noexcept
 直近のXMLストリームイベントの値を返します。
 
XML属性の処理
size_t GetAttributeCount () noexcept
 属性の数を取得します。 [詳解]
 
const ExiCharGetAttributeLocalName (size_t index) noexcept
 属性のローカル名を取得します。 [詳解]
 
const ExiCharGetAttributeNamespaceUri (size_t index) noexcept
 属性の名前空間URIを取得します。 [詳解]
 
const ExiCharGetAttributePrefix (size_t index) noexcept
 属性のプレフィックスを取得します。 [詳解]
 
const ExiCharGetAttributeValue (size_t index) noexcept
 属性の値を取得します。 [詳解]
 
const ExiCharGetAttributeValue (const ExiChar *namespace_uri, const ExiChar *local_name) noexcept
 名前空間URIとローカル名を指定して属性の値を取得します。 [詳解]
 
XML名前空間の処理
size_t GetNamespaceCount () noexcept
 新たに宣言された名前空間の数を取得します。 [詳解]
 
const ExiCharGetNamespacePrefix (size_t index) noexcept
 名前空間宣言のプレフィックスを取得します。 [詳解]
 
const ExiCharGetNamespaceUri (size_t index) noexcept
 名前空間宣言の名前空間URIを取得します。 [詳解]
 
エラーチェック関連
int GetLineNo () const noexcept
 XmlStreamReader が指し示している行番号を取得します。 [詳解]
 
int GetColumnNo () const noexcept
 XmlStreamReader が指し示しているカラム番号を取得します。 [詳解]
 
ExiErrorStatus::ErrorValue GetError () const noexcept
 エラー値を取得します。
 
ExiErrorStatusGetErrorStatus () const noexcept
 エラー状態オブジェクトを取得します。
 
 operator bool () const
 エラーが発生していない場合はtrueを返します。
 
XMLストリームイベントの取得
XmlStreamConstants Next () noexcept
 ストリームから次のXMLストリームイベントを読み込みます。 [詳解]
 
bool HasNext () const noexcept
 次のXMLストリームイベントを取得できるかどうかを返します。 [詳解]
 
XMLストリームイベントの種別判定
bool HasName () const noexcept
 ローカル名等を取得できるかどうかを返します。 [詳解]
 
bool HasText () const noexcept
 GetText()でテキストを取得できる状態かどうかを返します。 [詳解]
 
bool IsCharacters () const noexcept
 読み込んだデータがテキストノードかどうかを取得します。 [詳解]
 
bool IsEndElement () const noexcept
 読み込んだデータが終了タグかどうかを取得します。 [詳解]
 
bool IsStartElement () const noexcept
 読み込んだデータが開始タグかどうかを取得します。 [詳解]
 

XmlStreamReaderオブジェクトの初期化と終了

staticメンバ関数を通してオブジェクトを構築します。

説明
XmlStreamReaderのコンストラクタは公開されていません。Create()関数を呼び出す必要があります。 Create()関数で作成したオブジェクトはdelete可能ですが、通常UniquePtr経由で扱うことになります。
static XmlStreamReaderCreate (InputStream *stream, const XmlStreamReaderSettings &settings, const ExiAllocatorEx &al) noexcept
 オブジェクト単位のアロケータを指定してXmlStreamReaderのインスタンスを作成します。 [詳解]
 
static XmlStreamReaderCreate (InputStream *stream, const XmlStreamReaderSettings &settings) noexcept
 XmlStreamReaderのインスタンスを作成します。 [詳解]
 
static XmlStreamReaderCreate (InputStream *stream) noexcept
 XmlStreamReaderSettingsをデフォルト設定でXmlStreamReaderのインスタンスを作成します。 [詳解]
 
static XmlStreamReaderCreate (InputStream *stream, const ExiAllocatorEx &al) noexcept
 オブジェクト単位のアロケータを指定してXmlStreamReaderのインスタンスを作成します。 [詳解]
 
virtual ~XmlStreamReader () noexcept
 デストラクタです。
 
void Close () noexcept
 XmlStreamReaderをクローズします。基となるストリームは参照されなくなるだけでクローズされません。
 

詳解

XMLストリームからの読み出しを行う抽象クラスです。

説明
JavaのXMLStreamReader(StAX)のCursor APIと似たような書き方でXMLを読み出すことができます。
典型的には以下のようなコードを書いてXMLを読み込みます。
if (!r.get()) {
// インスタンスの生成に失敗しています。
// 恐らくExiAllocatorからのメモリの確保に失敗しています。
return out_of_memory;
}
while(r->HasNext()) {
// r->Next()でXMLを読んでいくとイベントが発生するので、イベントの種類ごとに行いたい処理を記述します。
switch(e) {
{
// 開始タグで行いたい処理を記述
// 属性や名前空間宣言は開始タグイベントの取得時に取り出すことができます。
}
break;
{
// 終了タグで行いたい処理を記述
}
break;
{
// テキストノードで行いたい処理を記述
}
break;
.... その他取り扱いたいイベントがある場合にはcaseを記述 ....
}
}
if (nlib_is_error(*r)) {
// 途中で何かエラーが発生しています。
// 一旦エラーが発生した後でXmlStreamReaderのAPIを呼び出しても何もおきません。
// もし落ちたりするようであればそれは<tt>exi</tt>ライブラリのバグです。
return error;
}
return ok;
また、取得できる文字列データで大抵のものは、XmlStreamReaderオブジェクトが削除されるまで有効です。 これは要素のローカル名等をキーとした連想配列などを作成する場合に、文字列のコピーを行うことが必ずしも必要ないことを意味しています。
つまり、以下のコードの外側のスコープの中であれば、文字列データの複製をとらなくても大丈夫ということです。
{
while(r->HasNext()) {
........
}
// このブロックの中であれば r->GetLocalName() 等で取得した文字列データは有効
}

XmlStreamReader.h56 行目に定義があります。

列挙型メンバ詳解

◆ XmlStreamConstants

XMLストリームの読み込みで発生したXMLストリームイベントの値です。

列挙値
NONE 

有効な状態ではありません。大抵の場合何らかのエラーが発生しています。

START_ELEMENT 

開始タグを読み込みました。

END_ELEMENT 

終了タグを読み込みました。

PROCESSING_INSTRUCTION 

PI(Processing Instruction)を読み込みました。

CHARACTERS 

テキストノードを読み込みました。

COMMENT 

コメントを読み込みました。

START_DOCUMENT 

XMLドキュメントの開始を読み込みました。

END_DOCUMENT 

XMLドキュメントの終了を読み込みました。

CDATA 

CDATAセクションを読み込みました。

XmlStreamReader.h58 行目に定義があります。

関数詳解

◆ Create() [1/4]

nn::nlib::exi::XmlStreamReader::Create ( InputStream stream,
const XmlStreamReaderSettings settings,
const ExiAllocatorEx al 
)
staticnoexcept

オブジェクト単位のアロケータを指定してXmlStreamReaderのインスタンスを作成します。

引数
[in]stream基となる出力ストリーム
[in]settings設定オプション
[in]alアロケータ
戻り値
生成されたXmlStreamReaderのインスタンス

◆ Create() [2/4]

nn::nlib::exi::XmlStreamReader::Create ( InputStream stream,
const XmlStreamReaderSettings settings 
)
inlinestaticnoexcept

XmlStreamReaderのインスタンスを作成します。

引数
[in]stream基となる入力ストリーム
[in]settings設定オプション
戻り値
生成されたXmlStreamReaderのインスタンス
説明
インスタンスはExiAllocatorからメモリを取得して作成されます。成功した場合、NULL以外のポインタを返します。 一般的には、返ってきたポインタをUniquePtrで保持して利用します。
エンコードオプションが書きこまれておらず、デフォルト設定以外の設定がなされたXMLを読み込む場合は、設定オプションをデフォルトから変更してインスタンスを作成する必要があります。 詳細はXmlStreamReaderSettingsを参照してください。

XmlStreamReader.h78 行目に定義があります。

◆ Create() [3/4]

nn::nlib::exi::XmlStreamReader::Create ( InputStream stream)
inlinestaticnoexcept

XmlStreamReaderSettingsをデフォルト設定でXmlStreamReaderのインスタンスを作成します。

引数
[in]stream基となる入力ストリーム
戻り値
生成されたXmlStreamReaderのインスタンス
説明
以下のようなコードと等価になります。
nn::nlib::exi::InputStream* stream = ....;

XmlStreamReader.h83 行目に定義があります。

◆ Create() [4/4]

nn::nlib::exi::XmlStreamReader::Create ( InputStream stream,
const ExiAllocatorEx al 
)
inlinestaticnoexcept

オブジェクト単位のアロケータを指定してXmlStreamReaderのインスタンスを作成します。

引数
[in]stream基となる出力ストリーム
[in]alアロケータ
戻り値
生成されたXmlStreamReaderのインスタンス

XmlStreamReader.h87 行目に定義があります。

◆ GetAttributeCount()

nn::nlib::exi::XmlStreamReader::GetAttributeCount ( )
inlinenoexcept

属性の数を取得します。

戻り値
属性の数
説明
開始タグの読み出し後に呼び出した場合、読み込まれた属性の数を取得します。 属性が存在しなかったか、開始タグの読み込み後でない場合は0を返します。

XmlStreamReader.h100 行目に定義があります。

◆ GetAttributeLocalName()

nn::nlib::exi::XmlStreamReader::GetAttributeLocalName ( size_t  index)
inlinenoexcept

属性のローカル名を取得します。

引数
[in]indexインデックス
戻り値
属性のローカル名
説明
インデックスに対応する属性のローカル名を返します。 インデックスに対応する属性が存在しない場合はNULLを返します。
文字列データ(文字列が格納されているメモリ)はXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h104 行目に定義があります。

◆ GetAttributeNamespaceUri()

nn::nlib::exi::XmlStreamReader::GetAttributeNamespaceUri ( size_t  index)
inlinenoexcept

属性の名前空間URIを取得します。

引数
[in]indexインデックス
戻り値
属性の名前空間URI
説明
インデックスに対応する属性の名前空間URIを返します。 インデックスに対応する属性が存在しない場合はNULLを返します。
文字列データ(文字列が格納されているメモリ)はXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h108 行目に定義があります。

◆ GetAttributePrefix()

nn::nlib::exi::XmlStreamReader::GetAttributePrefix ( size_t  index)
inlinenoexcept

属性のプレフィックスを取得します。

引数
[in]indexインデックス
戻り値
属性のプレフィックス
説明
インデックスに対応する属性のプレフィックスを取得します。 インデックスに対応する属性が存在しない場合はNULLを返します。
文字列データ(文字列が格納されているメモリ)はXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h112 行目に定義があります。

◆ GetAttributeValue() [1/2]

nn::nlib::exi::XmlStreamReader::GetAttributeValue ( size_t  index)
inlinenoexcept

属性の値を取得します。

引数
[in]indexインデックス
戻り値
属性の値
説明
インデックスに対応する属性の値を取得します。 インデックスに対応する属性が存在しない場合はNULLを返します。
文字列データ(文字列が格納されているメモリ)はXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h120 行目に定義があります。

◆ GetAttributeValue() [2/2]

nn::nlib::exi::XmlStreamReader::GetAttributeValue ( const ExiChar namespace_uri,
const ExiChar local_name 
)
inlinenoexcept

名前空間URIとローカル名を指定して属性の値を取得します。

引数
[in]namespace_uri名前空間URI(NULLは不可)
[in]local_nameローカル名(NULLは不可)
戻り値
属性の値
説明
名前空間URIとローカル名を指定して対応する属性の値を取得します。 属性が存在しなかったか、開始タグの読み込み後でない場合はNULLを返します。

XmlStreamReader.h124 行目に定義があります。

◆ GetColumnNo()

nn::nlib::exi::XmlStreamReader::GetColumnNo ( ) const
inlinenoexcept

XmlStreamReader が指し示しているカラム番号を取得します。

戻り値
カラム番号
説明
テキストXMLをパースしている場合のみ有効で、1以上の整数を返します。 バイナリXMLをパースしている場合は0を返します。

XmlStreamReader.h162 行目に定義があります。

◆ GetElementText()

nn::nlib::exi::XmlStreamReader::GetElementText ( )
inlinenoexcept

連続したテキストイベントを読み込んで1つのテキストを返します。

戻り値
テキストデータ
説明
XML作成時において、連続してXmlStreamWriter::WriteCharacters()を呼び出して書きこんだ場合などに、連続したテキストノードイベントが書きこまれます。 そのような場合に1つの文字列として扱いたい場合、この関数を呼び出してテキストデータを取得します。
テキストが存在しないか、何らかのエラーが発生した場合はNULLを返します。

XmlStreamReader.h141 行目に定義があります。

◆ GetLineNo()

nn::nlib::exi::XmlStreamReader::GetLineNo ( ) const
inlinenoexcept

XmlStreamReader が指し示している行番号を取得します。

戻り値
行番号
説明
テキストXMLをパースしている場合のみ有効で、1以上の整数を返します。 バイナリXMLをパースしている場合は0を返します。

XmlStreamReader.h161 行目に定義があります。

◆ GetLocalName()

nn::nlib::exi::XmlStreamReader::GetLocalName ( )
inlinenoexcept

ローカル名を取得します。

戻り値
ローカル名
説明
開始タグか終了タグを読み込んだ場合にローカル名を取得することができます。 それ以外の場合はNULLを返します。
文字列データ(文字列が格納されているメモリ)はXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h145 行目に定義があります。

◆ GetNamespaceCount()

nn::nlib::exi::XmlStreamReader::GetNamespaceCount ( )
inlinenoexcept

新たに宣言された名前空間の数を取得します。

戻り値
名前空間の数
説明
開始タグの読み込み後に呼び出した場合、新たに宣言された名前空間の数を取得します。 名前空間が宣言されていないか、開始タグの読み込み後でない場合は0を返します。

XmlStreamReader.h129 行目に定義があります。

◆ GetNamespacePrefix()

nn::nlib::exi::XmlStreamReader::GetNamespacePrefix ( size_t  index)
inlinenoexcept

名前空間宣言のプレフィックスを取得します。

引数
[in]indexインデックス
戻り値
名前空間宣言のプレフィックス
説明
インデックスに対応する名前空間宣言のプレフィックス文字列を返します。 インデックスに対応する名前空間宣言が存在しない場合はNULLを返します。
文字列データ(文字列が格納されているメモリ)はXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h133 行目に定義があります。

◆ GetNamespaceUri() [1/2]

nn::nlib::exi::XmlStreamReader::GetNamespaceUri ( size_t  index)
inlinenoexcept

名前空間宣言の名前空間URIを取得します。

引数
[in]indexインデックス
戻り値
名前空間宣言の名前空間URI
説明
インデックスに対応する名前空間宣言の名前空間URIを返します。 インデックスに対応する名前空間宣言が存在しない場合はNULLを返します。
文字列データ(文字列が格納されているメモリ)はXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h137 行目に定義があります。

◆ GetNamespaceUri() [2/2]

nn::nlib::exi::XmlStreamReader::GetNamespaceUri ( )
inlinenoexcept

XML名前空間のURIを取得します。

戻り値
XML名前空間のURI
説明
開始タグか終了タグを読み込んだ場合にXML名前空間のURIを取得することができます。 それ以外の場合はNULLを返します。
文字列データはXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h149 行目に定義があります。

◆ GetPrefix()

nn::nlib::exi::XmlStreamReader::GetPrefix ( )
inlinenoexcept

XMLの名前空間プレフィックスを取得します。

戻り値
XMLの名前空間プレフィックス文字列
説明
開始タグか終了タグを読み込んだ場合にXMLの名前空間プレフィックス文字列を取得することができます。 それ以外の場合はNULLを返します。
文字列データ(文字列が格納されているメモリ)はXmlStreamReaderオブジェクト存在する限り有効です。

XmlStreamReader.h153 行目に定義があります。

◆ GetText()

nn::nlib::exi::XmlStreamReader::GetText ( )
inlinenoexcept

テキストデータを取得します。

戻り値
テキストデータ
説明
直近のXMLストリームイベントによって取得できるデータは異なります。

XmlStreamReader.h157 行目に定義があります。

◆ HasName()

nn::nlib::exi::XmlStreamReader::HasName ( ) const
inlinenoexcept

ローカル名等を取得できるかどうかを返します。

戻り値
開始タグ・終了タグ又はPIを取得している場合にtrue

XmlStreamReader.h170 行目に定義があります。

◆ HasNext()

nn::nlib::exi::XmlStreamReader::HasNext ( ) const
inlinenoexcept

次のXMLストリームイベントを取得できるかどうかを返します。

戻り値
次のXMLストリームイベントを取得できるならばtrue

XmlStreamReader.h174 行目に定義があります。

◆ HasText()

nn::nlib::exi::XmlStreamReader::HasText ( ) const
inlinenoexcept

GetText()でテキストを取得できる状態かどうかを返します。

戻り値
テキスト・CDATAセクション・コメント又はPIを取得している場合にtrue

XmlStreamReader.h175 行目に定義があります。

◆ IsCharacters()

nn::nlib::exi::XmlStreamReader::IsCharacters ( ) const
inlinenoexcept

読み込んだデータがテキストノードかどうかを取得します。

戻り値
テキスト又はCDATAセクションならばtrue, それ以外ならfalse

XmlStreamReader.h179 行目に定義があります。

◆ IsEndElement()

nn::nlib::exi::XmlStreamReader::IsEndElement ( ) const
inlinenoexcept

読み込んだデータが終了タグかどうかを取得します。

戻り値
終了タグならtrue, それ以外ならfalse

XmlStreamReader.h180 行目に定義があります。

◆ IsStartElement()

nn::nlib::exi::XmlStreamReader::IsStartElement ( ) const
inlinenoexcept

読み込んだデータが開始タグかどうかを取得します。

戻り値
開始タグならtrue, それ以外ならfalse

XmlStreamReader.h181 行目に定義があります。

◆ Next()

nn::nlib::exi::XmlStreamReader::Next ( )
inlinenoexcept

ストリームから次のXMLストリームイベントを読み込みます。

戻り値
取得したXMLストリームイベントの値

XmlStreamReader.h163 行目に定義があります。


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