当前位置:   article > 正文

Qt编程5.1:使用QXmlStreamWriter xml写入(简单应用)

qxmlstreamwriter
  1. #include <QtCore/QCoreApplication>
  2. #include <QXmlStreamWriter>
  3. #include <QFile>
  4. #include <QDebug>
  5. #include <QDir>
  6. #include <QTime>
  7. struct FileStat{
  8. //文件名
  9. QString fileName;
  10. //文件大小
  11. QString fileSize;
  12. //上次修改时间
  13. QString atTime;
  14. //文件类型
  15. QString fileType;
  16. };
  17. typedef QList<FileStat> StatList;
  18. int main(int argc, char *argv[])
  19. {
  20. QCoreApplication a(argc, argv);
  21. //QList
  22. StatList fileList;
  23. //遍历C盘根目录下的文件文件夹,并将属性保存到list中
  24. QDir dir("c:/");
  25. dir.setFilter(QDir::Files|QDir::Dirs);
  26. foreach(QFileInfo fInfo, dir.entryInfoList())
  27. {
  28. //排除当前目录和上级目录
  29. if(fInfo.fileName().left(1) == ".")
  30. {
  31. continue;
  32. }
  33. FileStat fStat;
  34. fStat.fileName = fInfo.fileName();
  35. fStat.atTime = fInfo.lastModified().toLocalTime().toString("yyyy-MM-dd hh:mm:ss");
  36. if(fInfo.isDir())
  37. {
  38. fStat.fileSize ="0";
  39. fStat.fileType = "isDir";
  40. }
  41. else if(fInfo.isFile())
  42. {
  43. QString fileSize = fInfo.size() / 1024 /1024?
  44. QString::number(fInfo.size() / 1024 /1024)+="MB":
  45. fInfo.size() / 1024 ?
  46. QString::number(fInfo.size() / 1024)+="KB" : QString::number(fInfo.size())+="B";
  47. fStat.fileSize = fileSize;
  48. fStat.fileType ="isFile";
  49. }
  50. fileList.append(fStat);
  51. }
  52. //---------------------------------------------------xml文件写入
  53. int id = 1;
  54. QFile file("out.xml");
  55. if(file.open(QIODevice::WriteOnly|QIODevice::Text))
  56. {
  57. QXmlStreamWriter writer(&file);
  58. writer.setAutoFormatting(true);
  59. //设置自动缩进大小
  60. writer.setAutoFormattingIndent( 2 );
  61. //写入xml文档头,一般为: \<?xml version="1.0" encoding="UTF-8"?>\
  62. writer.writeStartDocument();
  63. //写入开始标记FileMsg
  64. writer.writeStartElement("FileMsg");
  65. //循环将容器中的数据写入到xml文件
  66. StatList::Iterator it = fileList.begin();
  67. for(;it != fileList.end();it++)
  68. {
  69. //写入开始标记DATA
  70. writer.writeStartElement("DATA");
  71. //在开始标记中写入属性ID
  72. writer.writeAttribute("ID",QString::number(id++,10));
  73. //写入文本信息
  74. writer.writeTextElement("FILENAME",it->fileName);
  75. writer.writeTextElement("FILESIZE",it->fileSize);
  76. writer.writeTextElement("LASTMODIFY",it->atTime);
  77. writer.writeTextElement("FILETYPE",it->fileType);
  78. //写入结束标记DATA
  79. writer.writeEndElement();
  80. }
  81. //写入结束标记FileMsg
  82. writer.writeEndElement();
  83. //xml文档结束
  84. writer.writeEndDocument();
  85. //关闭文件
  86. file.close();
  87. }
  88. else
  89. {
  90. qDebug()<<"Open File Failure";
  91. }
  92. //----------------------------------------------------xml文件写入结束
  93. return a.exec();
  94. }


 

 

//QXmlStreadWriter的使用效果如图:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/781902
推荐阅读
相关标签
  

闽ICP备14008679号