QXmlContentHandler Class
QXmlContentHandler クラスは、XML データの論理的な内容を報告するためのインターフェースを提供します。詳細...
| ヘッダー: | #include <QXmlContentHandler> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
| qmake: | QT += core5compat |
| 継承元: |
注:このクラスのすべての関数は再入可能である。
パブリック関数
| virtual | ~QXmlContentHandler() |
| virtual bool | characters(const QString &ch) = 0 |
| virtual bool | endDocument() = 0 |
| virtual bool | endElement(const QString &namespaceURI, const QString &localName, const QString &qName) = 0 |
| virtual bool | endPrefixMapping(const QString &prefix) = 0 |
| virtual QString | errorString() const = 0 |
| virtual bool | ignorableWhitespace(const QString &ch) = 0 |
| virtual bool | processingInstruction(const QString &target, const QString &data) = 0 |
| virtual void | setDocumentLocator(QXmlLocator *locator) = 0 |
| virtual bool | skippedEntity(const QString &name) = 0 |
| virtual bool | startDocument() = 0 |
| virtual bool | startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) = 0 |
| virtual bool | startPrefixMapping(const QString &prefix, const QString &uri) = 0 |
詳細な説明
アプリケーションが基本的な解析イベントの通知を受ける必要がある場合は、このインターフェースを実装し、QXmlReader::setContentHandler() を使用して有効にすることができます。そうすることで、リーダーはこのインターフェースを通じて、要素や文字データの開始および終了など、ドキュメントに関連する基本的なイベントを報告できるようになります。
このインターフェースにおけるイベントの順序は非常に重要であり、ドキュメント自体の情報の順序を反映しています。たとえば、要素のすべてのコンテンツ (文字データ、処理命令、および子要素) は、startElement() イベントと、対応するendElement() イベントの間に、順序通りに表示されます。
QXmlDefaultHandler クラスは、このインターフェースのデフォルト実装を提供します。特定の解析イベントについてのみ通知を受けたい場合は、QXmlDefaultHandler クラスをサブクラス化すると非常に便利です。
startDocument() 関数はドキュメントの先頭で呼び出され、endDocument() は末尾で呼び出されます。解析が始まる前に、setDocumentLocator() が呼び出されます。 各要素について、startElement() が呼び出され、各要素の終了時にはendElement() が呼び出されます。characters() 関数は文字データのチャンクに対して呼び出され、ignorableWhitespace() は空白文字のチャンクに対して、processingInstruction() は処理命令に対して呼び出されます。エンティティがスキップされた場合は、skippedEntity() が呼び出されます。プレフィックス URI スコープの開始時には、startPrefixMapping() が呼び出されます。
QXmlDTDHandler 、QXmlDeclHandler 、QXmlEntityResolver 、QXmlErrorHandler 、およびQXmlLexicalHandlerも参照してください 。
メンバ関数のドキュメント
[virtual noexcept] QXmlContentHandler::~QXmlContentHandler()
コンテンツハンドラを破棄します。
[pure virtual] bool QXmlContentHandler::characters(const QString &ch)
リーダーは、文字データのチャンク(通常の文字データ、またはCDATAセクション内の文字データのいずれか)の解析が完了した時点で、この関数を呼び出します(これら2つのタイプを区別する必要がある場合は、QXmlLexicalHandler::startCDATA() およびQXmlLexicalHandler::endCDATA() を使用する必要があります)。文字データは、ch で報告されます。
一部のリーダーは、要素の内容に含まれる空白を報告する際、この関数ではなくignorableWhitespace() 関数を使用します。
リーダーは、要素の文字データを複数のチャンクに分けて報告する場合があります。例えば、リーダーは「a<b」を 3 つの characters() イベント(「a 」、「<」、および「 b」)として報告することがあります。
この関数が `false ` を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは `errorString()` 関数を使用してエラーメッセージを取得します。
[pure virtual] bool QXmlContentHandler::endDocument()
リーダーは、解析が完了した後にこの関数を呼び出します。この関数は一度だけ呼び出され、最後に呼び出されるハンドラ関数となります。リーダーがすべての入力を読み終えた後、または致命的なエラーのために解析を中止した後に呼び出されます。
この関数がfalse を返すと、リーダーは解析を中止し、エラーを報告します。リーダーは、エラーメッセージを取得するためにerrorString()関数を使用します。
startDocument()も参照してください 。
[pure virtual] bool QXmlContentHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName)
リーダーは、修飾名 `qName`、ローカル名 `localName `、名前空間URI `namespaceURI` を持つ終了要素タグを解析した際に、この関数を呼び出します。
この関数がfalse を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは、関数errorString() を使用してエラーメッセージを取得します。
startElement()も参照してください 。
[pure virtual] bool QXmlContentHandler::endPrefixMapping(const QString &prefix)
リーダーは、プレフィックスprefix に対するプレフィックスマッピングの終了を知らせるために、この関数を呼び出します。
この関数が `false ` を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは関数 `errorString()` を使用してエラーメッセージを取得します。
startPrefixMapping()も参照してください 。
[pure virtual] QString QXmlContentHandler::errorString() const
リーダーは、エラー文字列を取得するためにこの関数を呼び出します。たとえば、ハンドラ関数のいずれかが `false` を返した場合などです。
[pure virtual] bool QXmlContentHandler::ignorableWhitespace(const QString &ch)
一部のリーダーは、この関数を使用して、要素の内容に含まれる各空白の塊を報告する場合があります。空白は `ch` で報告されます。
この関数がfalse を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは、関数errorString()を使用してエラーメッセージを取得します。
[pure virtual] bool QXmlContentHandler::processingInstruction(const QString &target, const QString &data)
リーダーは、処理命令の解析が完了すると、この関数を呼び出します。
target は処理命令のターゲット名であり、data は処理命令に含まれるデータです。
この関数が `false ` を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは関数 `errorString()` を使用してエラーメッセージを取得します。
[pure virtual] void QXmlContentHandler::setDocumentLocator(QXmlLocator *locator)
リーダーは、ドキュメントの解析を開始する前にこの関数を呼び出します。引数locator は、QXmlLocator へのポインタであり、これによりアプリケーションはドキュメント内の解析位置を取得することができます。
locator を破棄しないでください。これは、リーダーが破棄される際に自動的に破棄されます。(リーダーが破棄された後は、locator を使用しないでください)。
[pure virtual] bool QXmlContentHandler::skippedEntity(const QString &name)
一部のリーダーは、宣言を確認していない場合(たとえば、外部DTDにある場合など)、エンティティをスキップすることがあります。その場合、この関数を呼び出して、name というエンティティをスキップしたことを報告します。
この関数がfalse を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは、errorString() 関数を使用してエラーメッセージを取得します。
[pure virtual] bool QXmlContentHandler::startDocument()
リーダーは、ドキュメントの解析を開始する際にこの関数を呼び出します。リーダーは、setDocumentLocator() の呼び出し後、かつこのクラスまたはQXmlDTDHandler クラス内の他の関数が呼び出される前に、この関数を一度だけ呼び出します。
この関数が `false ` を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは `errorString()` 関数を使用してエラーメッセージを取得します。
endDocument()も参照してください 。
[pure virtual] bool QXmlContentHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)
リーダーは、開始要素タグの解析が完了した時点でこの関数を呼び出します。
対応する終了要素タグが読み込まれた際には、これに対応するendElement()の呼び出しが行われます。startElement()とendElement()の呼び出しは、常に正しくネストされています。空の要素タグ(例:<x/> )の場合、startElement()の呼び出しの直後にendElement()の呼び出しが続きます。
提供される属性リストには、明示的な値を持つ属性のみが含まれます。属性リストに名前空間宣言に使用される属性(つまり、xmlns で始まる属性)が含まれるのは、リーダーの namespace-prefix プロパティが true の場合のみです。
引数namespaceURI は名前空間 URI であり、要素に名前空間 URI がない場合や名前空間処理が行われない場合は空文字列となります。localName はローカル名(プレフィックスなし)であり、名前空間処理が行われない場合は空文字列となります。qName は修飾名(プレフィックス付き)であり、atts は要素に付随する属性です。 属性がない場合、atts は空の属性オブジェクトとなります。
この関数が `false ` を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは、関数 `errorString()` を使用してエラーメッセージを取得します。
endElement()も参照してください 。
[pure virtual] bool QXmlContentHandler::startPrefixMapping(const QString &prefix, const QString &uri)
リーダーは、プレフィックス-URI 名前空間マッピングスコープの開始を知らせるために、この関数を呼び出します。通常の名前空間処理においては、リーダーが要素名や属性名のプレフィックスを自動的に置換するため、この情報は必要ありません。
なお、startPrefixMapping() およびendPrefixMapping() の呼び出しが、互いに適切にネストされていることは保証されません。すべての startPrefixMapping() イベントは、対応するstartElement() イベントの前に発生し、すべてのendPrefixMapping() イベントは、対応するendElement() イベントの後に発生しますが、それ以外の順序については保証されません。
引数prefix は宣言される名前空間プレフィックスであり、引数uri はそのプレフィックスがマッピングされる名前空間URIです。
この関数がfalse を返した場合、リーダーは解析を中止し、エラーを報告します。リーダーは関数errorString() を使用してエラーメッセージを取得します。
endPrefixMapping()も参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.