このページでは

QXmlDefaultHandler Class

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

ヘッダー: #include <QXmlDefaultHandler>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmake: QT += core5compat
継承元:QXmlContentHandler 、QXmlErrorHandler 、QXmlDTDHandler 、QXmlEntityResolver 、QXmlLexicalHandler 、および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はQXmlContentHandler とQXmlErrorHandler の両方のサブクラスであるため、これを継承することで、以下の2つのリーダー関数に対して同じハンドラを使用できます:

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

リーダーは解析エラーをハンドラに通知するため、例えば、そのようなエラーが発生した際に解析を停止させたい場合は、QXmlErrorHandler::fatalError() を再実装する必要があります:

boolHandler::fatalError (constQXmlParseException&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()を再実装することも考えられます。

QXmlDTDHandler 、QXmlDeclHandler 、QXmlContentHandler 、QXmlEntityResolver 、QXmlErrorHandler 、およびQXmlLexicalHandlerも参照してください 。

メンバー関数のドキュメント

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) を再実装します。

ret をnullptr に設定し、リーダーがXMLドキュメントで指定されたシステム識別子を使用するようにします。

[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) を再実装します。

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

© 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.