Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7724126
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2013-12-24 15:05:38

Qt 提供了三种方法:

使用 QXmlStreamWriter

构造一个 DOM 树,然后掉其 save() 函数;

使用 QString 手动生成 XML

推荐使用 QXmlStreamWriter 生成 XML 文档。这个类帮助我们做了很多工作,比如特殊字符的转义。接下来我们使用QXmlStreamWriter  生成XML 文档:

点击(此处)折叠或打开

  1. QFile file("bookindex.xml"); //以只写方式创建一个文件
  2. if (!file.open(QFile::WriteOnly | QFile::Text)) {
  3.     qDebug() << "Error: Cannot write file: "
  4.              << qPrintable(file.errorString());
  5.     return false;
  6. }

  7. QXmlStreamWriter xmlWriter(&file);
  8. xmlWriter.setAutoFormatting(true); //格式输出,也就是会有标签的缩进
  9. xmlWriter.writeStartDocument();//开始进行 XML 文档的输出,这个函数会写下
  10. xmlWriter.writeStartElement("bookindex"); //根节点
  11. xmlWriter.writeStartElement("entry"); //写下一个 entry 的开始标签
  12. xmlWriter.writeAttribute("term", "sidebearings"); //然后给这个标签一个属性 term,属性值是 of vectors。
  13. xmlWriter.writeTextElement("page", "10"); //输出一个仅包含文本内容的标签
  14. xmlWriter.writeTextElement("page", "34-35");
  15. xmlWriter.writeTextElement("page", "307-308");
  16. xmlWriter.writeEndElement(); //关闭标签
  17. xmlWriter.writeStartElement("entry");
  18. xmlWriter.writeAttribute("term", "subtraction");
  19. xmlWriter.writeStartElement("entry");
  20. xmlWriter.writeAttribute("term", "of pictures");
  21. xmlWriter.writeTextElement("page", "115");
  22. xmlWriter.writeTextElement("page", "224");
  23. xmlWriter.writeEndElement();
  24. xmlWriter.writeStartElement("entry");
  25. xmlWriter.writeAttribute("term", "of vectors");
  26. xmlWriter.writeTextElement("page", "9");
  27. xmlWriter.writeEndElement();
  28. xmlWriter.writeEndElement();
  29. xmlWriter.writeEndDocument(); //这个 XML 文档已经写完。
  30. file.close();
  31. if (file.error()) {
  32.     qDebug() << "Error: Cannot write file: "
  33.              << qPrintable(file.errorString());
  34.     return false;
  35. }

XML 文档:

点击(此处)折叠或打开

  1. <bookindex>
  2.     <entry term="sidebearings">
  3.         <page>10</page>
  4.         <page>34-35</page>
  5.         <page>307-308</page>
  6.     </entry>
  7.     <entry term="subtraction">
  8.         <entry term="of pictures">
  9.             <page>115</page>
  10.             <page>244</page>
  11.         </entry>
  12.         <entry term="of vectors">
  13.             <page>9</page>
  14.         </entry>
  15.     </entry>
  16. </bookindex>

尽管我们推荐使用 QXmlStreamWriter 生成 XML 文档,但是如果现在已经有了 DOM 树,显然直接调用 QDomDocument::save() 函数更为方便。

 
返回目录:Qt学习整理

阅读(5151) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~