QXmlDefaultHandler Class

QXmlDefaultHandler クラスは、すべての XML ハンドラクラスのデフォルト実装を提供します。詳細...

Header: #include <QXmlDefaultHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmake: QT += core5compat
Inherits: QXmlContentHandler, QXmlErrorHandler, QXmlDTDHandler, QXmlEntityResolver, QXmlLexicalHandler, and QXmlDeclHandler

注意:このクラスの関数はすべてリエントラントです。

パブリック関数

再実装パブリック関数

virtual bool attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value) override
virtual bool characters(const QString &ch) override
virtual bool comment(const QString &ch) override
virtual bool endCDATA() override
virtual bool endDTD() override
virtual bool endDocument() override
virtual bool endElement(const QString &namespaceURI, const QString &localName, const QString &qName) override
virtual bool endEntity(const QString &name) override
virtual bool endPrefixMapping(const QString &prefix) override
virtual bool error(const QXmlParseException &exception) override
virtual QString errorString() const override
virtual bool externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId) override
virtual bool fatalError(const QXmlParseException &exception) override
virtual bool ignorableWhitespace(const QString &ch) override
virtual bool internalEntityDecl(const QString &name, const QString &value) override
virtual bool notationDecl(const QString &name, const QString &publicId, const QString &systemId) override
virtual bool processingInstruction(const QString &target, const QString &data) override
virtual bool resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret) override
virtual void setDocumentLocator(QXmlLocator *locator) override
virtual bool skippedEntity(const QString &name) override
virtual bool startCDATA() override
virtual bool startDTD(const QString &name, const QString &publicId, const QString &systemId) override
virtual bool startDocument() override
virtual bool startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts) override
virtual bool startEntity(const QString &name) override
virtual bool startPrefixMapping(const QString &prefix, const QString &uri) override
virtual bool unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName) override
virtual bool warning(const QXmlParseException &exception) override

詳細説明

このクラスは、QXmlReader のサブクラス、特にQXmlSimpleReader に対してカスタム・ハンドラを実装する際に便利な出発点となるように、特殊なハンドラ・クラスの機能をまとめています。各基本クラスの仮想関数はこのクラスで再実装され、多くの一般的なケースに対して賢明なデフォルト動作を提供します。このクラスをサブクラス化し、これらの関数をオーバーライドすることで、アプリケーションに関連するハンドラの部分の実装に集中することができます。

XML リーダーは、解析中に異なる種類のイベントに対してどのハンドラーを使用するかを指定する必要があります。つまり、QXmlDefaultHandler はすべての基本クラスから継承された関数のデフォルト実装を提供しますが、特定の種類のイベントに特化したハンドラを使用することもできます。

例えば、QXmlDefaultHandler は、QXmlContentHandlerQXmlErrorHandler の両方をサブクラス化しているので、サブクラス化することで、以下の両方のリーダー関数に同じハンドラを使用することができます:

    xmlReader.setContentHandler(handler);
    xmlReader.setErrorHandler(handler);

リーダはパース・エラーをハンドラに通知するので、例えば、そのようなエラーが発生したときにパースを停止したい場合は、QXmlErrorHandler::fatalError ()を再実装する必要があります:

bool Handler::fatalError (const QXmlParseException & exception)
{
    qWarning() << "Fatal error on line" << exception.lineNumber()
               << ", column" << exception.columnNumber() << ':'
               << exception.message();

    return false;
}

上記の関数は、false を返し、リーダに解析の停止を指示する。同じリーダを使い続けるには、新しいハンドラ・インスタンスを作成し、上記の方法でそれを使用するようにリーダをセットアップする必要がある。

QXmlDefaultHandlerによって継承された関数のいくつかを調べ、それらがカスタムハンドラで再実装される理由を考えることは有益です。カスタムハンドラは通常、QXmlContentHandler::startDocument ()を再実装し、ハンドラが新しいコンテンツに対応できるようにします。ドキュメント要素とその中のテキストは、QXmlContentHandler::startElement ()、QXmlContentHandler::endElement ()、QXmlContentHandler::characters ()を再実装することで処理できます。QXmlContentHandler::endDocument() を再実装して、文書が完全に読み込まれた時点でコンテンツの最終処理や検証を行いたい場合もあるでしょう。

QXmlDTDHandlerQXmlDeclHandlerQXmlContentHandlerQXmlEntityResolverQXmlErrorHandlerQXmlLexicalHandlerも参照

メンバ関数 ドキュメント

QXmlDefaultHandler::QXmlDefaultHandler()

QXmlReader のサブクラスで使用するハンドラを構築します。

[virtual noexcept] QXmlDefaultHandler::~QXmlDefaultHandler()

ハンドラを破棄します。

[override virtual] bool QXmlDefaultHandler::attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value)

再実装:QXmlDeclHandler::attributeDecl(const QString &eName, const QString &aName, const QString &type, const QString &valueDefault, const QString &value)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::characters(const QString &ch)

再実装:QXmlContentHandler::characters(const QString &ch)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::comment(const QString &ch)

再実装:QXmlLexicalHandler::comment(const QString &ch)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::endCDATA()

再実装:QXmlLexicalHandler::endCDATA().

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::endDTD()

再実装:QXmlLexicalHandler::endDTD().

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::endDocument()

再実装:QXmlContentHandler::endDocument().

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName)

再実装:QXmlContentHandler::endElement(const QString &namespaceURI, const QString &localName, const QString &qName)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::endEntity(const QString &name)

再実装:QXmlLexicalHandler::endEntity(const QString &name).

この再実装は何も行いません。

[override virtual] bool QXmlDefaultHandler::endPrefixMapping(const QString &prefix)

再実装:QXmlContentHandler::endPrefixMapping(const QString &prefix)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::error(const QXmlParseException &exception)

再実装:QXmlErrorHandler::error(const QXmlParseException &exception)。

この再実装は何もしません。

[override virtual] QString QXmlDefaultHandler::errorString() const

再実装:QXmlContentHandler::errorString() const.

デフォルトのエラー文字列を返します。

[override virtual] bool QXmlDefaultHandler::externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId)

再実装:QXmlDeclHandler::externalEntityDecl(const QString &name, const QString &publicId, const QString &systemId).

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::fatalError(const QXmlParseException &exception)

再実装:QXmlErrorHandler::fatalError(const QXmlParseException &exception)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::ignorableWhitespace(const QString &ch)

再実装:QXmlContentHandler::ignorableWhitespace(const QString &ch)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::internalEntityDecl(const QString &name, const QString &value)

再実装:QXmlDeclHandler::internalEntityDecl(const QString &name, const QString &value)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::notationDecl(const QString &name, const QString &publicId, const QString &systemId)

再実装:QXmlDTDHandler::notationDecl(const QString &name, const QString &publicId, const QString &systemId).

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::processingInstruction(const QString &target, const QString &data)

再実装:QXmlContentHandler::processingInstruction(const QString &target, const QString &data)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret)

再実装:QXmlEntityResolver::resolveEntity(const QString &publicId, const QString &systemId, QXmlInputSource *&ret)。

読者が XML ドキュメントで提供されたシステム識別子を使用するように、retnullptr に設定します。

[override virtual] void QXmlDefaultHandler::setDocumentLocator(QXmlLocator *locator)

再実装します:QXmlContentHandler::setDocumentLocator(QXmlLocator *locator)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::skippedEntity(const QString &name)

再実装:QXmlContentHandler::skippedEntity(const QString &name).

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::startCDATA()

再実装:QXmlLexicalHandler::startCDATA().

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::startDTD(const QString &name, const QString &publicId, const QString &systemId)

再実装:QXmlLexicalHandler::startDTD(const QString &name, const QString &publicId, const QString &systemId).

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::startDocument()

再実装:QXmlContentHandler::startDocument().

この再実装は何もしない。

[override virtual] bool QXmlDefaultHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)

再実装します:QXmlContentHandler::startElement(const QString &namespaceURI, const QString &localName, const QString &qName, const QXmlAttributes &atts)を再実装します。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::startEntity(const QString &name)

再実装します:QXmlLexicalHandler::startEntity(const QString &name).

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::startPrefixMapping(const QString &prefix, const QString &uri)

再実装:QXmlContentHandler::startPrefixMapping(const QString &prefix, const QString &uri)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName)

再実装:QXmlDTDHandler::unparsedEntityDecl(const QString &name, const QString &publicId, const QString &systemId, const QString &notationName)。

この再実装は何もしません。

[override virtual] bool QXmlDefaultHandler::warning(const QXmlParseException &exception)

再実装:QXmlErrorHandler::warning(const QXmlParseException &exception)。

この再実装は何もしません。

©2024 The Qt Company Ltd. 本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。