1 QXmlStreamWriter介绍
QXmlStreamWriter是一个用于写入XML文档的类,。这个类提供了一个带有简单流API的XML写入器,可以方便地生成符合XML规范的文档,QXmlStreamWriter支持节点、属性、命名空间等常见的XML元素。QXmlStreamWriter可以创建、修改和保存XML文件。
2 如何使用QXmlStreamWriter
头文件:#include <QXmlStreamWriter>
cmake:find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake:QT += core
3 XML文档介绍
XML全称是可扩展标记语言(Extensible Markup Language),XML是标准通用标记语言(SGML)的一个子集。XML主要用于标记电子文件,使其具有结构性。它可以用来标记数据、定义数据类型,是一种允许用户定义自己的标记语言的源语言。
XML文本格式一般包含以下几部分:
声明部分:XML文件的声明部分包括XML版本号和字符集声明,格式例子:。
根元素:一般情况下XML文件中的所有元素都包含在一个根元素中。根元素是XML文件的起点。
元素:XML文件中的元素包含一个开始标记、一个结束标记和中间的数据。元素的格式:data。其中element为元素的名称,data为元素的数据。
属性:XML文件中的元素可以包含属性,属性用于描述元素的特性。属性的格式:data。其中attribute为元素的某个属性名称,对应value是属性的值,元素可以包含多个属性值。
-
XML文档示例:
以下是一份国际化翻译中文简体XML文档例子,root是根元素,root元素的Language属性值是'SimpChinese'。
root根元素包括几个Text子元素,属性Code是唯一访问的Key,Text元素文本分别是翻译的中文。
<?xml version="1.0" encoding="UTF-8"?>
<!-- 根元素 -->
<root Language='SimpChinese'>
<Text Key='S_ADD'>新建</Text>
<Text Key='S_DELETE'>删除</Text>
<Text Key='S_EDIT'>编辑</Text>
<Text Key='S_SAVE'>保存</Text>
<Text Key='S_QUERY'>查询</Text>
<!-- ...... -->
</root>
4 QXmlStreamWriter封装XML文档方法
-
QXmlStreamWriter构造函数:
QXmlStreamWriter支持通过文件(QIODevice)、原始数据(QByteArray)和字符串(QString)等方式封装XML文档。
// 构造函数。
QXmlStreamWriter(QIODevice *device)
QXmlStreamWriter(const QByteArray &data)
QXmlStreamWriter(const QString &data)
QXmlStreamWriter(const char * data)
-
通过文件封装XML文档例子:
/**** 例子: ****/
#include <QFile>
#include <QXmlStreamWriter>
// 打开XML文件。
QFile file("newExample.xml");
file.open(QIODevice::WriteOnly);
// 通过QFile文件对象,创建QXmlStreamWriter对象。
QXmlStreamWriter xml_writer(&file);
xml_writer.setAutoFormatting(true); // 设置自动格式化输出。
-
QXmlStreamWriter几个关键方法:
// 设置是否格式化输出。
void setAutoFormatting(bool)
// 开始XML文档。
void writeStartDocument()
// 开始写一个普通元素。
void writeStartElement(const QString &qualifiedName)
// 在当前元素写属性。
void writeAttribute(const QString &qualifiedName, const QString &value)
// 写一个字符串。
void writeCharacters(const QString &text)
// 写一个文本元素。
void writeTextElement(const QString &qualifiedName, const QString &text)
// 写一段注释。
void writeComment(const QString &text)
// 写元素结束。
void writeEndElement()
// 写文档结束。
void writeEndDocument()
5 QXmlStreamWriter封装XML文件完整示例
首先创建一个QFile对象,用于打开一个文件用于写入。然后,我们创建一个QXmlStreamWriter对象,并将文件设备传递给它。接下来,我们使用一系列的writeStartDocument、writeStartElement、writeTextElement和writeAttribute等函数来构建XML文档。
最后,我们使用writeEndElement和writeEndDocument来关闭元素和XML文档。
-
示例代码:
#include <QCoreApplication>
#include <QFile>
#include <QXmlStreamWriter>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 打开XML文件。
QFile file("newExample.xml");
if (!file.open(QIODevice::WriteOnly))
{
return -1;
}
QXmlStreamWriter xml_writer(&file);
xml_writer.setAutoFormatting(true); // 设置自动格式化输出。
// 开始XML文档。
xml_writer.writeStartDocument();
// <root Language='SimpChinese'>
xml_writer.writeStartElement("root"); // 开始root元素。
xml_writer.writeAttribute("Language", "SimpChinese"); // 写入一个属性。
// <Text Key='S_ADD'>新建</Text>
xml_writer.writeStartElement("Text");
xml_writer.writeAttribute("Key", "S_ADD");
xml_writer.writeCharacters("新建");
xml_writer.writeEndElement();
// <Text Key='S_DELETE'>删除</Text>
xml_writer.writeStartElement("Text");
xml_writer.writeAttribute("Key", "S_DELETE");
xml_writer.writeCharacters("删除");
xml_writer.writeEndElement();
// <Text Key='S_EDIT'>编辑</Text>
xml_writer.writeStartElement("Text");
xml_writer.writeAttribute("Key", "S_EDIT");
xml_writer.writeCharacters("编辑");
xml_writer.writeEndElement();
// <Text Key='S_SAVE'>保存</Text>
xml_writer.writeStartElement("Text");
xml_writer.writeAttribute("Key", "S_SAVE");
xml_writer.writeCharacters("保存");
xml_writer.writeEndElement();
// <Text Key='S_QUERY'>查询</Text>
xml_writer.writeStartElement("Text");
xml_writer.writeAttribute("Key", "S_QUERY");
xml_writer.writeCharacters("查询");
xml_writer.writeEndElement();
// <!--......-->
xml_writer.writeComment("......"); // 写入一段注释。
// <address>深圳</address>
xml_writer.writeTextElement("address", "深圳"); // 写入一个文本元素
xml_writer.writeEndElement(); // 结束root元素。
xml_writer.writeEndDocument(); // 结束XML文档。
file.close(); // 关闭文件。
return 0;
}
运行这个程序将创建一个名为"newExample.xml"的XML文件。
<?xml version="1.0" encoding="UTF-8"?>
<root Language="SimpChinese">
<Text Key="S_ADD">新建</Text>
<Text Key="S_DELETE">删除</Text>
<Text Key="S_EDIT">编辑</Text>
<Text Key="S_SAVE">保存</Text>
<Text Key="S_QUERY">查询</Text>
<!-- ...... -->
<address>深圳</address>
</root>
-【End】-
#想了解更多精彩内容,关注下方公众号,还有示例源码、开发工具免费下载。
喜欢本文章,记得点赞、分享、关注哦~