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

XMLのストリームへの書き出しを行う抽象クラスです。 [詳解]

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

公開メンバ関数

void Flush () noexcept
 XMLライタをフラッシュします。 [詳解]
 
void WriteCData (const ExiChar *data) noexcept
 引数で指定したテキストを書き込みます。 [詳解]
 
void WriteCharacters (const ExiChar *text) noexcept
 引数で指定したテキストを書き込みます。 [詳解]
 
void WriteComment (const ExiChar *data) noexcept
 引数で指定したテキストを格納したXMLコメント(<!--...-->)を書き込みます。 [詳解]
 
void WriteProcessingInstruction (const ExiChar *target, const ExiChar *data) noexcept
 <?target data?>といったPI(Processing Instrcuction)を書き込みます。 [詳解]
 
XML名前空間の書き込み
const ExiCharGetPrefix (const ExiChar *uri) noexcept
 名前空間URIに対応するプレフィックスを取得します。 [詳解]
 
void WriteNamespace (const ExiChar *prefix, const ExiChar *namespace_uri) noexcept
 XML名前空間を宣言します。 [詳解]
 
void WriteDefaultNamespace (const ExiChar *namespace_uri) noexcept
 デフォルト名前空間を宣言します。 [詳解]
 
XML属性の書き込み
void WriteAttribute (const ExiChar *local_name, const ExiChar *value) noexcept
 名前空間なしの属性と値を書き込みます。 [詳解]
 
void WriteAttribute (const ExiChar *prefix, const ExiChar *namespace_uri, const ExiChar *local_name, const ExiChar *value) noexcept
 名前空間つきの属性と値を書き込みます。 [詳解]
 
開始タグと終了タグの書き込み
void WriteEmptyElement (const ExiChar *local_name) noexcept
 名前空間なしの要素で開始タグと終了タグをを書き込みます。 [詳解]
 
void WriteEmptyElement (const ExiChar *prefix, const ExiChar *namespace_uri, const ExiChar *local_name) noexcept
 名前空間つきの要素で開始タグと終了タグを書き込みます。 [詳解]
 
void WriteEndElement () noexcept
 終了タグを書き込みます。
 
void WriteStartElement (const ExiChar *local_name) noexcept
 名前空間なしの要素で開始タグを書き込みます。 [詳解]
 
void WriteStartElement (const ExiChar *prefix, const ExiChar *namespace_uri, const ExiChar *local_name) noexcept
 名前空間つきの要素で開始タグを書き込みます。 [詳解]
 
XMLドキュメントの開始と終了
void WriteStartDocument () noexcept
 XMLドキュメントの開始を宣言し、XML宣言等を書き込みます。
 
void WriteEndDocument () noexcept
 開いている任意の要素を全て閉じ、XMLライタをクローズします。
 
エラーチェック関連
ExiErrorStatus::ErrorValue GetError () const noexcept
 エラー値を取得します。
 
ExiErrorStatusGetErrorStatus () const noexcept
 エラー状態オブジェクトを取得します。
 
 operator bool () const
 エラーが発生していない場合はtrueを返します。
 

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

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

XmlStreamWriterのコンストラクタは公開されていません。Create()関数を呼び出す必要があります。 Create()関数で作成したオブジェクトはdelete可能ですが、通常UniquePtr経由で扱うことになります。

static XmlStreamWriterCreate (OutputStream *stream, const XmlStreamWriterSettings &settings, const ExiAllocatorEx &al) noexcept
 オブジェクト単位のアロケータを指定してXmlStreamWriterのインスタンスを作成します。 [詳解]
 
static XmlStreamWriterCreate (OutputStream *stream, const XmlStreamWriterSettings &settings) noexcept
 XmlStreamWriterのインスタンスを作成します。 [詳解]
 
static XmlStreamWriterCreate (OutputStream *stream) noexcept
 XmlStreamWriterSettingsをデフォルト設定でXmlStreamReaderのインスタンスを作成します。 [詳解]
 
static XmlStreamWriterCreate (OutputStream *stream, const ExiAllocatorEx &al) noexcept
 オブジェクト単位のアロケータを指定してXmlStreamWriterのインスタンスを作成します。 [詳解]
 
void Close () noexcept
 XmlStreamWriterをクローズします。基となるストリームは切り離されるだけでクローズされません。
 

詳解

XMLのストリームへの書き出しを行う抽象クラスです。

説明
Javaの XMLStreamWriter(StAX)や.NETの XmlWriterと似たような書き方でXMLを書きだすことができます。
XmlStreamWriterのインスタンスを作成するには、XmlStreamWriter::Create()関数を利用します。 インスタンスはExiAllocatorからメモリを取得して作成されます。
典型的には以下のようなコードを書いてXMLを書き込みます。
if (!w.get()) {
// インスタンスの生成に失敗しています。
// 恐らくExiAllocatorからのメモリの確保に失敗しています。
return out_of_memory;
}
w->WriteStartDocument();
w->WriteStartElement(...);
// ....
w->WriteEndElement();
w->WriteEndDocument();
w->Flush();
if (nlib_is_error(*w)) {
// 途中で何かエラーが発生しています。
// 一旦エラーが発生した後でXmlStreamWriterのAPIを呼び出しても何もおきません。
// もし落ちたりするようであればそれは<tt>exi</tt>ライブラリのバグです。
return error;
}
return ok;

XmlStreamWriter.h41 行目に定義があります。

関数詳解

§ Create() [1/4]

nn::nlib::exi::XmlStreamWriter::Create ( OutputStream stream,
const XmlStreamWriterSettings settings,
const ExiAllocatorEx al 
)
staticnoexcept

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

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

§ Create() [2/4]

nn::nlib::exi::XmlStreamWriter::Create ( OutputStream stream,
const XmlStreamWriterSettings settings 
)
inlinestaticnoexcept

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

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

XmlStreamWriter.h45 行目に定義があります。

§ Create() [3/4]

nn::nlib::exi::XmlStreamWriter::Create ( OutputStream stream)
inlinestaticnoexcept

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

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

XmlStreamWriter.h50 行目に定義があります。

§ Create() [4/4]

nn::nlib::exi::XmlStreamWriter::Create ( OutputStream stream,
const ExiAllocatorEx al 
)
inlinestaticnoexcept

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

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

XmlStreamWriter.h54 行目に定義があります。

§ Flush()

nn::nlib::exi::XmlStreamWriter::Flush ( )
inlinenoexcept

XMLライタをフラッシュします。

説明
基となるストリームにデータをフラッシュして、基となるストリームもフラッシュします。

XmlStreamWriter.h65 行目に定義があります。

§ GetPrefix()

nn::nlib::exi::XmlStreamWriter::GetPrefix ( const ExiChar uri)
inlinenoexcept

名前空間URIに対応するプレフィックスを取得します。

引数
[in]uri名前空間URI
戻り値
名前空間プレフィックス
説明
名前空間が存在しない場合はNULLを、名前空間がデフォルト名前空間である場合には空文字列を返します。uriNULLの場合は空文字列と同様に扱われます。
名前空間に対して複数のプレフィックスが存在する場合は、対応するプレフィックス文字列のどれかを返します。

XmlStreamWriter.h69 行目に定義があります。

§ WriteAttribute() [1/2]

nn::nlib::exi::XmlStreamWriter::WriteAttribute ( const ExiChar local_name,
const ExiChar value 
)
inlinenoexcept

名前空間なしの属性と値を書き込みます。

引数
[in]local_name属性のローカル名
[in]value属性の値
説明
以下のコードと等価です。
WriteAttribute(L"", L"", local_name, value);

XmlStreamWriter.h73 行目に定義があります。

§ WriteAttribute() [2/2]

nn::nlib::exi::XmlStreamWriter::WriteAttribute ( const ExiChar prefix,
const ExiChar namespace_uri,
const ExiChar local_name,
const ExiChar value 
)
noexcept

名前空間つきの属性と値を書き込みます。

引数
[in]prefix属性の名前空間プレフィックス
[in]namespace_uri属性の名前空間URI
[in]local_name属性のローカル名
[in]value属性の値
説明
localNameNULL又は空文字列を渡すことはできません。 prefix, namespaceUri, value についてはNULLは空文字列と同様に扱われます。

§ WriteCData()

nn::nlib::exi::XmlStreamWriter::WriteCData ( const ExiChar data)
inlinenoexcept

引数で指定したテキストを書き込みます。

引数
[in]data書き込むテキスト
説明
dataNULLを渡した場合は空文字列と同様に扱われます。

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

§ WriteCharacters()

nn::nlib::exi::XmlStreamWriter::WriteCharacters ( const ExiChar text)
inlinenoexcept

引数で指定したテキストを書き込みます。

引数
[in]text書き込むテキスト
説明
textNULLを渡した場合は空文字列と同様に扱われます。

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

§ WriteComment()

nn::nlib::exi::XmlStreamWriter::WriteComment ( const ExiChar data)
noexcept

引数で指定したテキストを格納したXMLコメント(<!--...-->)を書き込みます。

引数
[in]dataXMLコメント内のテキスト
説明
dataNULLを渡した場合は空文字列と同様に扱われます。

§ WriteDefaultNamespace()

nn::nlib::exi::XmlStreamWriter::WriteDefaultNamespace ( const ExiChar namespace_uri)
inlinenoexcept

デフォルト名前空間を宣言します。

引数
[in]namespace_uriデフォルト名前空間の名前空間URI
説明
この関数は以下のコードと等価です。
WriteNamespace(L"", namespace_uri);

XmlStreamWriter.h96 行目に定義があります。

§ WriteEmptyElement() [1/2]

nn::nlib::exi::XmlStreamWriter::WriteEmptyElement ( const ExiChar local_name)
inlinenoexcept

名前空間なしの要素で開始タグと終了タグをを書き込みます。

引数
[in]local_name要素のローカル名
説明
この関数は以下のコードと等価です。
WriteEmptyElement(L"", L"", local_name);

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

§ WriteEmptyElement() [2/2]

nn::nlib::exi::XmlStreamWriter::WriteEmptyElement ( const ExiChar prefix,
const ExiChar namespace_uri,
const ExiChar local_name 
)
noexcept

名前空間つきの要素で開始タグと終了タグを書き込みます。

引数
[in]prefix要素の名前空間プレフィックス
[in]namespace_uri要素の名前空間URI
[in]local_name要素のローカル名
説明
この関数は以下のコードと等価です。
WriteStartElement(prefix, namespace_uri, local_name);

§ WriteNamespace()

nn::nlib::exi::XmlStreamWriter::WriteNamespace ( const ExiChar prefix,
const ExiChar namespace_uri 
)
inlinenoexcept

XML名前空間を宣言します。

引数
[in]prefix名前空間に対応するプレフィックス
[in]namespace_uri名前空間URI
説明
prefixnamespaceUriNULLを指定した場合は空文字列と同様に扱われます。

XmlStreamWriter.h90 行目に定義があります。

§ WriteProcessingInstruction()

nn::nlib::exi::XmlStreamWriter::WriteProcessingInstruction ( const ExiChar target,
const ExiChar data 
)
noexcept

<?target data?>といったPI(Processing Instrcuction)を書き込みます。

引数
[in]targetPIの名前。
[in]dataPIに含めるテキスト。
説明
PIを書き込むには、 Preserve::pistrueにして XmlStreamWriterを作成する必要があります。そうでない場合、この関数を呼び出しても何も書き込まれません。
なお、この関数でXML宣言を書きこむことはできません。 WriteStartDocument()を利用する必要があります。
targetNULLや空文字列を指定することはできません。 dataNULLを指定した場合は空文字列と同様に扱われます。

§ WriteStartElement() [1/2]

nn::nlib::exi::XmlStreamWriter::WriteStartElement ( const ExiChar local_name)
inlinenoexcept

名前空間なしの要素で開始タグを書き込みます。

引数
[in]local_name要素のローカル名
説明
以下のコードと等価です。
WriteStartElement(L"", L"", local_name);

XmlStreamWriter.h123 行目に定義があります。

§ WriteStartElement() [2/2]

nn::nlib::exi::XmlStreamWriter::WriteStartElement ( const ExiChar prefix,
const ExiChar namespace_uri,
const ExiChar local_name 
)
noexcept

名前空間つきの要素で開始タグを書き込みます。

引数
[in]prefix要素の名前空間プレフィックス
[in]namespace_uri要素の名前空間URI
[in]local_name要素のローカル名
説明
プレフィックスが名前空間URIに関連付けられていない場合は対応する名前空間宣言が出力されます。
デフォルト名前空間を利用する場合は、prefixNULLか空文字列を指定して呼び出します。
WriteStartElement(L"", uri, local_name); // <localName xmlns="uri">
この場合、既に名前空間URIにプレフィックスが与えられている場合でもデフォルト名前空間が宣言されます。
また、プレフィックスだけを指定して名前空間URIを省略することはできません。

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