Qt 提供了三种方法:
1 使用 QXmlStreamWriter;
2 构造一个 DOM 树,然后掉其 save() 函数;
3 使用 QString 手动生成 XML。
推荐使用 QXmlStreamWriter 生成 XML 文档。这个类帮助我们做了很多工作,比如特殊字符的转义。接下来我们使用QXmlStreamWriter 生成XML 文档:
-
QFile file("bookindex.xml"); //以只写方式创建一个文件
-
if (!file.open(QFile::WriteOnly | QFile::Text)) {
-
qDebug() << "Error: Cannot write file: "
-
<< qPrintable(file.errorString());
-
return false;
-
}
-
-
QXmlStreamWriter xmlWriter(&file);
-
xmlWriter.setAutoFormatting(true); //格式输出,也就是会有标签的缩进
-
xmlWriter.writeStartDocument();//开始进行 XML 文档的输出,这个函数会写下
-
xmlWriter.writeStartElement("bookindex"); //根节点
-
xmlWriter.writeStartElement("entry"); //写下一个 entry 的开始标签
-
xmlWriter.writeAttribute("term", "sidebearings"); //然后给这个标签一个属性 term,属性值是 of vectors。
-
xmlWriter.writeTextElement("page", "10"); //输出一个仅包含文本内容的标签
-
xmlWriter.writeTextElement("page", "34-35");
-
xmlWriter.writeTextElement("page", "307-308");
-
xmlWriter.writeEndElement(); //关闭标签
-
xmlWriter.writeStartElement("entry");
-
xmlWriter.writeAttribute("term", "subtraction");
-
xmlWriter.writeStartElement("entry");
-
xmlWriter.writeAttribute("term", "of pictures");
-
xmlWriter.writeTextElement("page", "115");
-
xmlWriter.writeTextElement("page", "224");
-
xmlWriter.writeEndElement();
-
xmlWriter.writeStartElement("entry");
-
xmlWriter.writeAttribute("term", "of vectors");
-
xmlWriter.writeTextElement("page", "9");
-
xmlWriter.writeEndElement();
-
xmlWriter.writeEndElement();
-
xmlWriter.writeEndDocument(); //这个 XML 文档已经写完。
-
file.close();
-
if (file.error()) {
-
qDebug() << "Error: Cannot write file: "
-
<< qPrintable(file.errorString());
-
return false;
-
}
XML 文档:
-
<bookindex>
-
<entry term="sidebearings">
-
<page>10</page>
-
<page>34-35</page>
-
<page>307-308</page>
-
</entry>
-
<entry term="subtraction">
-
<entry term="of pictures">
-
<page>115</page>
-
<page>244</page>
-
</entry>
-
<entry term="of vectors">
-
<page>9</page>
-
</entry>
-
</entry>
-
</bookindex>
尽管我们推荐使用 QXmlStreamWriter 生成 XML 文档,但是如果现在已经有了 DOM 树,显然直接调用 QDomDocument::save() 函数更为方便。
返回目录:Qt学习整理
阅读(5151) | 评论(0) | 转发(1) |