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() が呼び出される。prefix-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 、名前空間 URInamespaceURI を持つ終了要素タグを解析したときに、この関数を呼び出します。
この関数が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() 呼び出しを引き起こす。
属性リストには、明示的な値を持つ属性しか含まれていません。属性リストには、readerのnamespace-prefixプロパティがtrueの場合のみ、名前空間宣言に使用される属性(つまりxmlnsで始まる属性)が含まれます。
引数namespaceURI は名前空間URIで、要素に名前空間URIがない場合や名前空間処理が行われない場合は空文字列となります。localName は(接頭辞なしの)ローカル名で、名前空間処理が行われない場合は空文字列となります。qName は(接頭辞ありの)修飾名で、atts は要素に付属する属性です。属性がない場合、atts は空の属性オブジェクトです。
この関数がfalse
を返した場合、リーダは解析を中止し、エラーを報告します。リーダーはエラーメッセージを得るために関数errorString() を使用します。
endElement()も参照してください 。
[pure virtual]
bool QXmlContentHandler::startPrefixMapping(const QString &prefix, const QString &uri)
リーダはこの関数を呼び出して、プレフィックス-URI 名前空間マッピングスコープの開始を知らせます。リーダは要素名や属性名のプレフィックスを自動的に置き換えるので、 通常の名前空間処理ではこの情報は不要です。
endPrefixMappingすべての startPrefixMapping() イベントは対応するstartElement() イベントの前に発生し、 すべてのendPrefixMapping() イベントは対応するendElement() イベントの後に発生しますが、 それ以外の順序は保証されません。
引数prefix は宣言される名前空間プレフィックス、引数uri はプレフィックスがマップされる名前空間 URI です。
この関数がfalse
を返すと、リーダはパースを中止してエラーを報告する。エラーメッセージを取得するには、errorString() 関数を使用します。
endPrefixMapping()も参照 。
© 2025 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.