En esta página

QXmlSimpleReader Class

La clase QXmlSimpleReader proporciona una implementación de un simple analizador XML. Más...

Cabecera: #include <QXmlSimpleReader>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core5Compat)
target_link_libraries(mytarget PRIVATE Qt6::Core5Compat)
qmake: QT += core5compat
Hereda: QXmlReader

Advertencia: Esta clase no es reentrante.

Funciones Públicas

QXmlSimpleReader()
virtual ~QXmlSimpleReader()
virtual bool parse(const QXmlInputSource *input, bool incremental)
virtual bool parseContinue()

Funciones públicas reimplementadas

virtual QXmlDTDHandler *DTDHandler() const override
virtual QXmlContentHandler *contentHandler() const override
virtual QXmlDeclHandler *declHandler() const override
virtual QXmlEntityResolver *entityResolver() const override
virtual QXmlErrorHandler *errorHandler() const override
virtual bool feature(const QString &name, bool *ok = nullptr) const override
virtual bool hasFeature(const QString &name) const override
virtual bool hasProperty(const QString &name) const override
virtual QXmlLexicalHandler *lexicalHandler() const override
virtual bool parse(const QXmlInputSource &input) override
virtual bool parse(const QXmlInputSource *input) override
virtual void *property(const QString &name, bool *ok = nullptr) const override
virtual void setContentHandler(QXmlContentHandler *handler) override
virtual void setDTDHandler(QXmlDTDHandler *handler) override
virtual void setDeclHandler(QXmlDeclHandler *handler) override
virtual void setEntityResolver(QXmlEntityResolver *handler) override
virtual void setErrorHandler(QXmlErrorHandler *handler) override
virtual void setFeature(const QString &name, bool enable) override
virtual void setLexicalHandler(QXmlLexicalHandler *handler) override
virtual void setProperty(const QString &name, void *value) override

Descripción detallada

Este lector XML es adecuado para una amplia gama de aplicaciones. Es capaz de analizar XML bien formado y puede informar de los espacios de nombres de los elementos a un gestor de contenidos; sin embargo, no analiza ninguna entidad externa. Por razones históricas, no realiza la normalización de valores de atributos ni la gestión de fin de línea descritas en la especificación XML 1.0.

El patrón de uso más sencillo para esta clase es crear una instancia de lector, definir una fuente de entrada, especificar los manejadores que utilizará el lector y analizar los datos.

Por ejemplo, podríamos utilizar un QFile para suministrar la entrada. En este caso, creamos un lector y definimos una fuente de entrada que utilizará el lector:

    QXmlSimpleReader xmlReader;
    QXmlInputSource *source = new QXmlInputSource(file);

Un manejador nos permite realizar acciones cuando el lector encuentra ciertos tipos de contenido, o si se encuentran errores en la entrada. Hay que indicar al lector qué manejador debe utilizar para cada tipo de evento. Para muchas aplicaciones comunes, podemos crear un manejador personalizado subclasificando QXmlDefaultHandler, y utilizarlo para manejar tanto los eventos de error como los de contenido:

    Handler *handler = new Handler;
    xmlReader.setContentHandler(handler);
    xmlReader.setErrorHandler(handler);

Si no estableces al menos los manejadores de contenido y de error, el analizador sintáctico volverá a su comportamiento por defecto-y no hará nada.

La forma más conveniente de manejar la entrada es leerla en una sola pasada usando la función parse() con un argumento que especifique la fuente de entrada:

    bool ok = xmlReader.parse(source);

    if (!ok)
        std::cout << "Parsing failed." << std::endl;

Si no se puede analizar toda la entrada de una sola vez (por ejemplo, si es muy grande o se recibe a través de una conexión de red), los datos pueden introducirse en el analizador por partes. Esto se consigue indicando a parse() que trabaje de forma incremental, y realizando llamadas posteriores a la función parseContinue(), hasta que todos los datos hayan sido procesados.

Una forma común de realizar el análisis incremental es conectar la señal readyRead() de un network reply una ranura, y manejar los datos entrantes allí. Véase QNetworkAccessManager.

Algunos aspectos del comportamiento de análisis pueden adaptarse utilizando setFeature() y setProperty().

xmlReader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);

QXmlSimpleReader no es reentrante. Si quieres usar la clase en código con hilos, bloquea el código usando QXmlSimpleReader con un mecanismo de bloqueo, como QMutex.

Tenga en cuenta que esta clase está obsoleta, por favor utilice QXmlStreamReader o QDomDocument para leer archivos XML.

Documentación de Funciones Miembro

QXmlSimpleReader::QXmlSimpleReader()

Construye un lector XML simple.

[virtual noexcept] QXmlSimpleReader::~QXmlSimpleReader()

Destruye el lector XML simple.

[override virtual] QXmlDTDHandler *QXmlSimpleReader::DTDHandler() const

Reimplementa: QXmlReader::DTDHandler() const.

Ver también setDTDHandler().

[override virtual] QXmlContentHandler *QXmlSimpleReader::contentHandler() const

Reimplementa: QXmlReader::contentHandler() const.

Ver también setContentHandler().

[override virtual] QXmlDeclHandler *QXmlSimpleReader::declHandler() const

Reimplementa: QXmlReader::declHandler() const.

Ver también setDeclHandler().

[override virtual] QXmlEntityResolver *QXmlSimpleReader::entityResolver() const

Reimplementa: QXmlReader::entityResolver() const.

Ver también setEntityResolver().

[override virtual] QXmlErrorHandler *QXmlSimpleReader::errorHandler() const

Reimplementa: QXmlReader::errorHandler() const.

Ver también setErrorHandler().

[override virtual] bool QXmlSimpleReader::feature(const QString &name, bool *ok = nullptr) const

Reimplementa: QXmlReader::feature(const QString &nombre, bool *ok) const.

Véase también setFeature().

[override virtual] bool QXmlSimpleReader::hasFeature(const QString &name) const

Reimplementa: QXmlReader::hasFeature(const QString &name) const.

[override virtual] bool QXmlSimpleReader::hasProperty(const QString &name) const

Reimplementa: QXmlReader::hasProperty(const QString &name) const.

[override virtual] QXmlLexicalHandler *QXmlSimpleReader::lexicalHandler() const

Reimplementa: QXmlReader::lexicalHandler() const.

Ver también setLexicalHandler().

[override virtual] bool QXmlSimpleReader::parse(const QXmlInputSource &input)

Reimplementa: QXmlReader::parse(const QXmlInputSource &input).

[override virtual] bool QXmlSimpleReader::parse(const QXmlInputSource *input)

Reimplementa: QXmlReader::parse(const QXmlInputSource *input).

Lee un documento XML de input y lo analiza de una sola vez (de forma no incremental). Devuelve true si el análisis se ha realizado correctamente; en caso contrario, devuelve false.

[virtual] bool QXmlSimpleReader::parse(const QXmlInputSource *input, bool incremental)

Lee un documento XML de input y lo analiza. Devuelve true si el análisis se ha completado con éxito; en caso contrario, devuelve false, indicando que se ha producido un error.

Si incremental es falso, esta función devolverá false si el archivo XML no se lee completamente. En este caso, el análisis sintáctico no puede continuar.

Si incremental es verdadero, el analizador sintáctico no devuelve false si llega al final de input antes de alcanzar el final del archivo XML. En su lugar, almacena el estado del analizador sintáctico para poder continuar con el análisis más adelante, cuando haya más datos disponibles. En tal caso, puede utilizar la función parseContinue() para continuar con el análisis sintáctico. Esta clase almacena un puntero a la fuente de entrada input y la función parseContinue() intenta leer de esa fuente de entrada. Por lo tanto, no debe eliminar la fuente de entrada input hasta que ya no necesite llamar a parseContinue().

Si se llama a esta función con incremental en true mientras se está realizando un análisis incremental, se iniciará una nueva sesión de análisis y se perderá la sesión anterior.

Véase también parseContinue() y QTcpSocket.

[virtual] bool QXmlSimpleReader::parseContinue()

Continúa el análisis incremental, tomando la entrada de QXmlInputSource que se especificó con la llamada más reciente a parse(). Para utilizar esta función, debe haber llamado a parse() con el argumento incremental establecido en true.

Devuelve false si se produce un error de análisis; en caso contrario, devuelve true, aunque no se haya alcanzado el final del archivo XML. Puede continuar el análisis más adelante llamando de nuevo a esta función cuando haya más datos disponibles para analizar.

La llamada a esta función cuando no hay datos disponibles en la fuente de entrada indica al lector que se ha llegado al final del archivo XML. Si la entrada suministrada hasta ese momento no estaba bien formada, se produce un error de análisis y se devuelve false. Si la entrada suministrada estaba bien formada, se devuelve true. Es importante finalizar la entrada de esta forma porque permite reutilizar el lector para analizar otros archivos XML.

Si se llama a esta función una vez alcanzado el final del archivo, pero sin datos disponibles, se devolverá false, tanto si la entrada anterior estaba bien formada como si no.

Véase también parse(), QXmlInputSource::data(), y QXmlInputSource::next().

[override virtual] void *QXmlSimpleReader::property(const QString &name, bool *ok = nullptr) const

Reimplementa: QXmlReader::property(const QString &nombre, bool *ok) const.

Véase también setProperty().

[override virtual] void QXmlSimpleReader::setContentHandler(QXmlContentHandler *handler)

Reimplementa: QXmlReader::setContentHandler(QXmlContentHandler *handler).

Véase también contentHandler().

[override virtual] void QXmlSimpleReader::setDTDHandler(QXmlDTDHandler *handler)

Reimplementa: QXmlReader::setDTDHandler(QXmlDTDHandler *handler).

[override virtual] void QXmlSimpleReader::setDeclHandler(QXmlDeclHandler *handler)

Reimplementa: QXmlReader::setDeclHandler(QXmlDeclHandler *handler).

Véase también declHandler().

[override virtual] void QXmlSimpleReader::setEntityResolver(QXmlEntityResolver *handler)

Reimplementa: QXmlReader::setEntityResolver(QXmlEntityResolver *handler).

Véase también entityResolver().

[override virtual] void QXmlSimpleReader::setErrorHandler(QXmlErrorHandler *handler)

Reimplementa: QXmlReader::setErrorHandler(QXmlErrorHandler *handler).

Véase también errorHandler().

[override virtual] void QXmlSimpleReader::setFeature(const QString &name, bool enable)

Reimplementa: QXmlReader::setFeature(const QString &nombre, valor bool).

Activa la función name si enable es verdadero; en caso contrario, la desactiva.

El parámetro name debe ser una de las siguientes cadenas:

CaracterísticaPor defectoNotas
http://xml.org/sax/features/namespacesverdaderoSi se activa, los espacios de nombres se comunican al gestor de contenidos.
http://xml.org/sax/features/namespace-prefixesfalsoSi esta opción está activada, se notifican los nombres prefijados y atributos originales utilizados para las declaraciones de espacios de nombres.
http://qt-project.org/xml/features/report-whitespace-only-CharDataverdaderoSi esta opción está activada, los CharData compuestos únicamente por caracteres de espacio en blanco se notifican mediante QXmlContentHandler::characters(). Si se desactiva, los espacios en blanco se descartan silenciosamente.
http://qt-project.org/xml/features/report-start-end-entityfalsoSi está habilitado, el analizador sintáctico reporta los eventos QXmlContentHandler::startEntity() y QXmlContentHandler::endEntity(), por lo que los datos de caracteres pueden ser reportados en trozos. Si se desactiva, el analizador sintáctico no informa de estos eventos, sino que sustituye silenciosamente las entidades, e informa de los datos de caracteres en un trozo.

Véase también feature() y hasFeature().

[override virtual] void QXmlSimpleReader::setLexicalHandler(QXmlLexicalHandler *handler)

Reimplementa: QXmlReader::setLexicalHandler(QXmlLexicalHandler *handler).

Véase también lexicalHandler().

[override virtual] void QXmlSimpleReader::setProperty(const QString &name, void *value)

Reimplementa: QXmlReader::setProperty(const QString &nombre, void *valor).

Véase también property().

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