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()
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)

enabletrue の場合は自動フォーマットを有効にし、そうでない場合は無効にする。

デフォルト値はfalse である。

注: プロパティautoFormatting に対するセッター関数。

autoFormatting()も参照

void QXmlStreamWriter::setDevice(QIODevice *device)

現在のデバイスをdevice に設定します。 ストリームをQByteArray に書き込みたい場合は、QBuffer デバイスを作成します。

device() も参照して ください。

void QXmlStreamWriter::writeAttribute(QAnyStringView namespaceUri, QAnyStringView name, QAnyStringView value)

指定したnamespaceUri の前にnamevalue を付けた属性を書き込みます。名前空間がまだ宣言されていない場合、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 を書き込みます。文字 "<", "&", """ は、実体参照 "&lt;", "&amp;", "&quot;" としてエスケープされます。禁じられた文字列"]]>"を避けるために、">"は"&gt; "としてエスケープされます。

注意: 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 = {})

targetdata で 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 要素をqualifiedNametext で書き込みます。

に相当する便利な関数です:

        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.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。