QXmlStreamWriter Class
QXmlStreamWriter クラスは、シンプルなストリーミング API を備えた XML ライターを提供します。詳細...
Header: | #include <QXmlStreamWriter> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバ一覧
- QXmlStreamWriterは、XMLクラスの一部です。
注意:このクラスの関数はすべてリエントラントです。
プロパティ
- autoFormatting : bool
- autoFormattingIndent : int
パブリック関数
QXmlStreamWriter() | |
QXmlStreamWriter(QByteArray *array) | |
QXmlStreamWriter(QIODevice *device) | |
QXmlStreamWriter(QString *string) | |
~QXmlStreamWriter() | |
bool | autoFormatting() const |
int | autoFormattingIndent() const |
QIODevice * | device() const |
bool | hasError() const |
void | setAutoFormatting(bool enable) |
void | setAutoFormattingIndent(int spacesOrTabs) |
void | setDevice(QIODevice *device) |
void | writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value) |
void | writeAttribute(const QXmlStreamAttribute &attribute) |
void | writeAttribute(QAnyStringView qualifiedName, QAnyStringView value) |
void | writeAttributes(const QXmlStreamAttributes &attributes) |
void | writeCDATA(QAnyStringView text) |
void | writeCharacters(QAnyStringView text) |
void | writeComment(QAnyStringView text) |
void | writeCurrentToken(const QXmlStreamReader &reader) |
void | writeDTD(QAnyStringView dtd) |
void | writeDefaultNamespace(QAnyStringView namespaceUri) |
void | writeEmptyElement(QAnyStringView namespaceUri, QAnyStringView name) |
void | writeEmptyElement(QAnyStringView qualifiedName) |
void | writeEndDocument() |
void | writeEndElement() |
void | writeEntityReference(QAnyStringView name) |
void | writeNamespace(QAnyStringView namespaceUri, QAnyStringView prefix = {}) |
void | writeProcessingInstruction(QAnyStringView target, QAnyStringView data = {}) |
void | writeStartDocument(QAnyStringView version) |
void | writeStartDocument(QAnyStringView version, bool standalone) |
void | writeStartDocument() |
void | writeStartElement(QAnyStringView namespaceUri, QAnyStringView name) |
void | writeStartElement(QAnyStringView qualifiedName) |
void | writeTextElement(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView text) |
void | writeTextElement(QAnyStringView qualifiedName, QAnyStringView text) |
詳細説明
QXmlStreamWriterは、XMLを記述するためのQXmlStreamReader 。関連クラスと同様、setDevice() で指定されたQIODevice を操作します。APIはシンプルでわかりやすく、書きたいXMLトークンやイベントごとに、ライターは専用の関数を提供します。
writeStartDocument ()でドキュメントを開始し、writeEndDocument ()で終了します。これにより、開いているタグはすべて暗黙のうちに閉じられます。
要素タグはwriteStartElement ()で開き、writeAttribute ()またはwriteAttributes ()、要素の内容、writeEndElement ()の順に続けます。より短い形式のwriteEmptyElement ()は、writeAttributes ()の後に空の要素を記述するために使用することができます。
要素内容は、文字、実体参照、入れ子要素のいずれかで構成されます。これは、writeCharacters()で記述される。また、writeEntityReference()や、それに続くwriteStartElement()の呼び出しで、すべての禁則文字や文字シーケンスのエスケープも行われる。便利なメソッドwriteTextElement() は、テキストしか含まない終端要素を記述するために使用できます。
以下のコード・スニペットは、インデントを使用してフォーマットされた XML を記述するための、このクラスの基本的な使用方法を示しています:
QXmlStreamWriter stream(&output); stream.setAutoFormatting(true); stream.writeStartDocument(); ... stream.writeStartElement("bookmark"); stream.writeAttribute("href", "http://qt-project.org/"); stream.writeTextElement("title", "Qt Project"); stream.writeEndElement(); // bookmark ... stream.writeEndDocument();
QXmlStreamWriter が名前空間の接頭辞を管理してくれるので、 要素や属性を記述する際にnamespaceUri
を指定するだけです。特定のプレフィックスに従わなければならない場合は、writeNamespace() またはwriteDefaultNamespace() を使用して手動で名前空間を宣言することで、ライターにそれらを使用させることができます。あるいは、ストリームライターの名前空間サポートをバイパスして、 代わりに修飾名をとるオーバーロードメソッドを使うこともできます。名前空間http://www.w3.org/XML/1998/namespaceは暗黙的なもので、接頭辞xml にマップされます。
ストリーム・ライターは、要素間の空白部分に改行とインデントを追加することで、生成されたXMLデータを自動的にフォーマットすることができます。この機能は、autoFormatting プロパティでオンにすることができ、autoFormattingIndent プロパティでカスタマイズすることができます。
その他の関数として、writeCDATA ()、writeComment ()、writeProcessingInstruction ()、writeDTD ()がある。XML ストリームの連結は、writeCurrentToken() でサポートされています。
QXmlStreamWriter は、常に XML を UTF-8 でエンコードします。
基礎となるデバイスへの書き込み中にエラーが発生した場合、hasError() は真を返し始め、それ以降の書き込みは無視されます。
QXmlStream Bookmarks の例では、ストリーム・ライターを使用して、以前にQXmlStreamReader によって読み込まれた XML ブックマーク・ファイル (XBEL) を書き込む方法を示します。
プロパティの説明
autoFormatting : bool
このプロパティは、ストリーム・ライターの自動フォーマット・フラグを保持します。
このプロパティは、ストリームライターが生成された XML データを自動的にフォーマットするかどうかを制御する。有効にすると、ライターは要素間の空白部分(無視可能な空白)に自動的に改行とインデントを追加します。自動書式の主な目的は、データを複数の行に分割し、人間が読む際の可読性を高めることです。インデントの深さは、autoFormattingIndent プロパティで制御できます。
デフォルトでは、オートフォーマットは無効になっています。
アクセス関数:
bool | autoFormatting() const |
void | setAutoFormatting(bool enable) |
autoFormattingIndent : int
このプロパティは、自動書式設定が有効な場合にインデントに使用されるスペースまたはタブの数を保持します。正の数はスペースを示し、負の数はタブを示す。
デフォルトのインデントは4です。
アクセス関数:
int | autoFormattingIndent() const |
void | setAutoFormattingIndent(int spacesOrTabs) |
autoFormattingも参照のこと 。
メンバ関数説明
QXmlStreamWriter::QXmlStreamWriter()
ストリームライターを構築します。
setDevice()も参照 。
[explicit]
QXmlStreamWriter::QXmlStreamWriter(QByteArray *array)
array に書き込むストリーム・ライターを構築する。これは、QBuffer デバイス上で動作し、array で動作する xml ライターを作成するのと同じである。
[explicit]
QXmlStreamWriter::QXmlStreamWriter(QIODevice *device)
device に書き込むストリームライターを構築する;
[explicit]
QXmlStreamWriter::QXmlStreamWriter(QString *string)
string に書き込むストリームライターを構築します。
[noexcept]
QXmlStreamWriter::~QXmlStreamWriter()
デストラクタ。
bool QXmlStreamWriter::autoFormatting() const
自動フォーマットが有効な場合はtrue
を返し、そうでない場合はfalse
を返す。
注: プロパティ autoFormatting のゲッター関数です。
setAutoFormatting()も参照 。
QIODevice *QXmlStreamWriter::device() const
QXmlStreamWriter に関連付けられた現在のデバイス、またはデバイスが割り当てられていない場合はnullptr
を返します。
setDevice() も参照 。
bool QXmlStreamWriter::hasError() const
書き込みに失敗した場合はtrue
を返します。
これは、ストリームが基礎となるデバイスへの書き込みに失敗した場合や、 書き込まれるデータに無効な文字が含まれていた場合に発生します。
エラー・ステータスは決してリセットされない。エラー発生後の書き込みは、エラー状態が解除されても無視されることがある。
void QXmlStreamWriter::setAutoFormatting(bool enable)
enable がtrue
の場合は自動フォーマットを有効にし、そうでない場合は無効にする。
デフォルト値はfalse
である。
注: プロパティautoFormatting に対するセッター関数。
autoFormatting()も参照 。
void QXmlStreamWriter::setDevice(QIODevice *device)
現在のデバイスをdevice に設定します。 ストリームをQByteArray に書き込みたい場合は、QBuffer デバイスを作成します。
device() も参照して ください。
void QXmlStreamWriter::writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value)
指定したnamespaceUri の前にname とvalue を付けた属性を書き込みます。名前空間がまだ宣言されていない場合、QXmlStreamWriter がその名前空間宣言を生成します。
この関数は、コンテンツが書き込まれる前のwriteStartElement() の後、またはwriteEmptyElement() の後にのみ呼び出すことができます。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を呼び出します。
void QXmlStreamWriter::writeAttribute(const QXmlStreamAttribute &attribute)
これはオーバーロードされた関数です。
attribute を書き込みます。
この関数は、コンテンツが書き込まれる前のwriteStartElement() の後、またはwriteEmptyElement() の後にのみ呼び出すことができます。
void QXmlStreamWriter::writeAttribute(QAnyStringView qualifiedName, QAnyStringView value)
これはオーバーロードされた関数です。
qualifiedName およびvalue で属性を書き込みます。
この関数は、コンテンツが書き込まれる前のwriteStartElement() の後、またはwriteEmptyElement() の後にのみ呼び出すことができます。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を呼び出します。
void QXmlStreamWriter::writeAttributes(const QXmlStreamAttributes &attributes)
属性ベクトルattributes を書き込みます。属性で参照される名前空間がまだ宣言されていない場合、QXmlStreamWriter はその名前空間宣言を生成します。
この関数は、内容が書き込まれる前のwriteStartElement() の後、またはwriteEmptyElement() の後にのみ呼び出すことができます。
writeAttribute() およびwriteNamespace()も参照 。
void QXmlStreamWriter::writeCDATA(QAnyStringView text)
text を CDATA セクションとして書き込みます。text に禁止文字列 "]]> が含まれる場合、CDATAセクションに分割される。
この関数は主に補完のために存在する。writeCharacters() は、コンテンツ以外の文字を自動的にエスケープするので、通常は使用する必要はありません。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
void QXmlStreamWriter::writeCharacters(QAnyStringView text)
text を書き込みます。文字 "<", "&", """ は、実体参照 "<", "&", """ としてエスケープされます。禁じられた文字列"]]>"を避けるために、">"は"> "としてエスケープされます。
注意: 6.5より前のバージョンのQtでは、この関数はQAnyStringView ではなくQString を取っていました。
writeEntityReference()も参照してください 。
void QXmlStreamWriter::writeComment(QAnyStringView text)
text を XML のコメントとして書き込みます。text は、禁じられたシーケンス--
を含んではいけませんし、-
で終わってはいけません。XMLはコメント中の-
をエスケープする方法を提供しないことに注意してください。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取ります。
void QXmlStreamWriter::writeCurrentToken(const QXmlStreamReader &reader)
reader の現在の状態を書き込みます。
この関数の目的は、XMLデータの連鎖処理をサポートすることです。
QXmlStreamReader::tokenType()も参照のこと 。
void QXmlStreamWriter::writeDTD(QAnyStringView dtd)
DTDセクションを書き込みます。dtd はXML 1.0仕様のdoctypedeclプロダクション全体を表します。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取ります。
void QXmlStreamWriter::writeDefaultNamespace(QAnyStringView namespaceUri)
namespaceUri のデフォルト名前空間宣言を書き込みます。
writeStartElement() またはwriteEmptyElement() が呼び出された場合、宣言は現在の要素に適用され、そうでない場合は次の子要素に適用されます。
名前空間http://www.w3.org/XML/1998/namespace(xmlns にバインド) とhttp://www.w3.org/2000/xmlns/(xml にバインド) は、定義上、デフォルトとして宣言できないことに注意してください。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
void QXmlStreamWriter::writeEmptyElement(QAnyStringView namespaceUri, QAnyStringView name)
指定されたnamespaceUri の前にname を付けた空の要素を書き込みます。名前空間が宣言されていない場合は、QXmlStreamWriter が名前空間宣言を生成します。その後にwriteAttribute() を呼び出すと、この要素に属性が追加されます。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を呼び出します。
writeNamespace()も参照してください 。
void QXmlStreamWriter::writeEmptyElement(QAnyStringView qualifiedName)
これはオーバーロードされた関数です。
修飾名qualifiedName を持つ空の要素を書き込みます。その後にwriteAttribute() を呼び出すと、この要素に属性が追加されます。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
void QXmlStreamWriter::writeEndDocument()
開いている残りの開始要素をすべて閉じ、改行を書き込みます。
writeStartDocument()も参照してください 。
void QXmlStreamWriter::writeEndElement()
直前の開始要素を閉じます。
writeStartElement()も参照 。
void QXmlStreamWriter::writeEntityReference(QAnyStringView name)
エンティティ参照name を "&name;" としてストリームに書き込みます。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
void QXmlStreamWriter::writeNamespace(QAnyStringView namespaceUri, QAnyStringView prefix = {})
prefix で、namespaceUri の名前空間宣言を書き込みます。prefix が空の場合、QXmlStreamWriter は、文字 'n' に数字を続けた一意な接頭辞を割り当てます。
writeStartElement() またはwriteEmptyElement() が呼ばれた場合、宣言は現在の要素に適用され、そうでない場合は次の子要素に適用されます。
接頭辞xml は、http://www.w3.org/XML/1998/namespace のために定義済みかつ予約済みであり、他の接頭辞と結合することはできないことに注意。接頭辞xmlnsとその URIhttp://www.w3.org/2000/xmlns/は名前空間機構そのものに使われるため、宣言では完全に禁止されています。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
void QXmlStreamWriter::writeProcessingInstruction(QAnyStringView target, QAnyStringView data = {})
target とdata で XML 処理命令を書き込みます。data は "?>" というシーケンスを含んではいけません。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString をとりました。
void QXmlStreamWriter::writeStartDocument(QAnyStringView version)
XML バージョン番号version で始まるドキュメントを書き込みます。
注意: 6.5 より前の Qt バージョンでは、この関数はQAnyStringView ではなくQString をとりました。
writeEndDocument()も参照してください 。
void QXmlStreamWriter::writeStartDocument(QAnyStringView version, bool standalone)
XML バージョン番号version とスタンドアロン属性standalone を持つドキュメントの開始を書き込みます。
注意: 6.5 より前の Qt バージョンでは、この関数はQAnyStringView ではなくQString をとりました。
writeEndDocument()も参照してください 。
void QXmlStreamWriter::writeStartDocument()
これはオーバーロードされた関数です。
XMLバージョン番号 "1.0 "で始まるドキュメントを書き込みます。
writeEndDocument() も参照 。
void QXmlStreamWriter::writeStartElement(QAnyStringView namespaceUri, QAnyStringView name)
指定したnamespaceUri の前にname を付加した開始要素を書き込みます。名前空間がまだ宣言されていない場合、QXmlStreamWriter がその名前空間宣言を生成する。その後にwriteAttribute() を呼び出すと、この要素に属性が追加されます。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を呼び出します。
writeNamespace(),writeEndElement(),writeEmptyElement()も参照してください 。
void QXmlStreamWriter::writeStartElement(QAnyStringView qualifiedName)
これはオーバーロードされた関数です。
開始要素をqualifiedName で書き込む。その後にwriteAttribute() を呼び出すと、この要素に属性が追加されます。
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取ります。
writeEndElement() およびwriteEmptyElement()も参照してください 。
void QXmlStreamWriter::writeTextElement(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView text)
name namespaceUri text名前空間が宣言されていない場合は、QXmlStreamWriter が名前空間宣言を生成します。
と同等の便利な関数です:
writeStartElement(namespaceUri, name);
writeCharacters(text);
writeEndElement();
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取ります。
void QXmlStreamWriter::writeTextElement(QAnyStringView qualifiedName, QAnyStringView text)
これはオーバーロードされた関数です。
text 要素をqualifiedName とtext で書き込みます。
に相当する便利な関数です:
writeStartElement(qualifiedName); writeCharacters(text); writeEndElement();
注意: Qt 6.5 より前のバージョンでは、この関数はQAnyStringView ではなくQString を取っていました。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。