QT 读取xml文件,然后写入另外一个新的xml文件的简单方法

发布于 2022-09-30 19:40:53 字数 3027 浏览 36 评论 0

简单来说,读一个xml文件,然后对某些节点进行修改(本例子没有修改,增加修改也很简单),然后写入目标xml文件的例子。

  1. QFile srcFile(srcFileName);
  2. if (!srcFile.open(QFile::ReadOnly | QFile::Text)) {
  3.      QMessageBox::warning(this, tr("Warning/ Convert"),
  4.                        tr("Cannot open soruce file %1:\n%2.")
  5.                        .arg(srcFileName)
  6.                        .arg(srcFile.errorString()));
  7.      return;
  8. }
  9. QFile tarFile(tarFileName);
  10. if (!tarFile.open(QFile::WriteOnly | QFile::Text | QIODevice::Truncate)) {
  11.      QMessageBox::warning(this, tr("Warning/ Convert"),
  12.                        tr("Cannot open target file %1:\n%2.")
  13.                        .arg(tarFileName)
  14.                        .arg(tarFile.errorString()));
  15.      srcFile.close();
  16.      return;
  17. }
  18. QXmlStreamReader reader(&srcFile);
  19. QXmlStreamWriter writer(&tarFile);
  20. writer.setAutoFormatting(true);
  21. writer.writeStartDocument();
  22. while (!reader.atEnd())
  23. {
  24.      reader.readNext();
  25.      if(reader.isStartElement())
  26.      {
  27.          QXmlStreamAttributes attr = reader.attributes();
  28.          writer.writeStartElement(reader.name().toString());
  29.          if(attr.size()>0)
  30.          {
  31.              writer.writeAttributes(attr);
  32.          }
  33.      }
  34.      if(reader.isCharacters())
  35.      {
  36.          writer.writeCharacters(reader.text().toString());
  37.      }
  38.      if(reader.isEndElement())
  39.      {
  40.          writer.writeEndElement();
  41.      }
  42. }
  43. writer.writeEndDocument();
  44. srcFile.close();
  45. tarFile.Close();

复制代码

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文