QXmlContentHandler Class
QXmlContentHandler クラスは、XML データの論理的な内容を報告するためのインターフェイスを提供します。詳細...
Header: | #include <QXmlContentHandler> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
qmake: | QT += core5compat |
Inherited By: |
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
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()も参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。