Transmisión XML

Qt proporciona dos clases para leer y escribir XML a través de una sencilla API de streaming: QXmlStreamReader y QXmlStreamWriter. Estas clases se encuentran en Qt Serialization (parte de QtCore).

Un lector de flujo informa de un documento XML como un flujo de tokens. Esto difiere de SAX, ya que las aplicaciones SAX proporcionan manejadores para recibir eventos XML del analizador, mientras que QXmlStreamReader maneja el bucle, extrayendo tokens del lector cuando son necesarios. Este enfoque de extracción hace posible construir analizadores descendentes recursivos, lo que permite dividir el código de análisis XML en diferentes métodos o clases.

QXmlStreamReader es un analizador XML 1.0 bien formado que excluye las entidades externas analizadas. Por lo tanto, los datos proporcionados por el lector de flujo se ajustan a los criterios del W3C para XML bien formado, siempre que no se produzca ningún error. En caso contrario, pueden utilizarse funciones como atEnd(), error() y hasError() para comprobar y visualizar los errores.

Un ejemplo de implementación que utiliza QXmlStreamReader sería el XbelReader en QXmlStream Bookmarks Example, que envuelve un QXmlStreamReader. Lee la implementación para aprender más sobre cómo utilizar la clase QXmlStreamReader.

Emparejada con QXmlStreamReader está la clase QXmlStreamWriter, que proporciona un escritor XML con una API de streaming simple. QXmlStreamWriter opera sobre un QIODevice y tiene funciones especializadas para todos los tokens XML o eventos que quieras escribir, como writeDTD(), writeCharacters(), writeComment() y así sucesivamente.

Para escribir un documento XML con QXmlStreamWriter, se inicia un documento con la función writeStartDocument() y se termina con writeEndDocument(), que cierra implícitamente todas las etiquetas abiertas restantes. Las etiquetas de los elementos se abren con writeStartDocument() y van seguidas de writeAttribute() o writeAttributes(), el contenido del elemento y, a continuación, writeEndDocument(). Además, writeEmptyElement() puede utilizarse para escribir elementos vacíos.

El contenido de los elementos comprende caracteres, referencias a entidades o elementos anidados. El contenido puede escribirse con writeCharacters(), una función que también se encarga de escapar todos los caracteres y secuencias de caracteres prohibidos, writeEntityReference(), o llamadas posteriores a writeStartElement().

La clase XbelWriter de QXmlStream Bookmarks Example envuelve un QXmlStreamWriter. Vea la implementación para ver cómo usar la clase QXmlStreamWriter.

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