这个代码示例展示了如何使用QXmlStreamWriter类在Qt中生成一个包含多级节点和属性的XML文档:

 1 #include <QCoreApplication>
 2 #include <QFile>
 3 #include <QXmlStreamWriter>
 4 #include <QDebug>
 5 
 6 int main(int argc, char *argv[])
 7 {
 8     QCoreApplication a(argc, argv);
 9 
10     // 打开文件进行写操作
11     QFile file("books_with_attributes.xml");
12     if (!file.open(QIODevice::WriteOnly)) {
13         qWarning("Failed to open file for writing."); // 打开文件失败,输出警告信息
14         return -1;
15     }
16 
17     QXmlStreamWriter xmlWriter(&file); // 创建QXmlStreamWriter对象
18     xmlWriter.setAutoFormatting(true); // 设置自动格式化,使生成的XML文件更具可读性
19     xmlWriter.writeStartDocument(); // 开始写入XML文档
20 
21     // 根元素
22     xmlWriter.writeStartElement("library");
23 
24     // 第一书籍
25     xmlWriter.writeStartElement("book");
26     xmlWriter.writeAttribute("genre", "Fiction"); // 添加属性 genre
27     xmlWriter.writeAttribute("publicationYear", "1925"); // 添加属性 publicationYear
28     xmlWriter.writeTextElement("title", "The Great Gatsby"); // 添加标题元素
29     xmlWriter.writeStartElement("author"); // 添加作者元素
30     xmlWriter.writeTextElement("firstName", "F. Scott"); // 添加作者名字
31     xmlWriter.writeTextElement("lastName", "Fitzgerald"); // 添加作者姓氏
32     xmlWriter.writeEndElement(); // 结束作者元素
33     xmlWriter.writeTextElement("year", "1925"); // 添加年份元素
34     xmlWriter.writeEndElement(); // 结束书籍元素
35 
36     // 第二书籍
37     xmlWriter.writeStartElement("book");
38     xmlWriter.writeAttribute("genre", "Dystopian"); // 添加属性 genre
39     xmlWriter.writeAttribute("publicationYear", "1949"); // 添加属性 publicationYear
40     xmlWriter.writeTextElement("title", "1984"); // 添加标题元素
41     xmlWriter.writeStartElement("author"); // 添加作者元素
42     xmlWriter.writeTextElement("firstName", "George"); // 添加作者名字
43     xmlWriter.writeTextElement("lastName", "Orwell"); // 添加作者姓氏
44     xmlWriter.writeEndElement(); // 结束作者元素
45     xmlWriter.writeTextElement("year", "1949"); // 添加年份元素
46     xmlWriter.writeEndElement(); // 结束书籍元素
47 
48     // 结束根元素
49     xmlWriter.writeEndElement();
50 
51     xmlWriter.writeEndDocument(); // 结束XML文档写入
52 
53     file.close(); // 关闭文件
54 
55     qDebug() << "XML file created successfully."; // 输出成功信息
56 
57     return a.exec();
58 }