【问题标题】:XmlStreamWriterXmlStreamWriter
【发布时间】:2012-08-23 01:08:56
【问题描述】:

我是 Qt 的新手,我想使用 Qt 4 和 QxmlStreamwriter 更新(添加新节点和属性)一个 xml 文件,但是 Append 打开模式将光标设置在 enddocument 行之后的文件中...

有没有办法使用 QXmlStreamWriter 来实现?如果有,请给我一个示例代码

【问题讨论】:

    标签: xml qt xmlupdate


    【解决方案1】:

    您需要用额外的节点重新编写文件。流接口 (QXmlStreamReader / QXmlStreamWriter) 比 DOM (QDomDocument) 接口更复杂,但它的好处是内存要求更低。

    通过 DOM 接口,您可以处理 XML 文档的内存表示。使用流接口,您可能需要构建和维护自己的表示。

    流接口示例代码:

    QFile inputFile("in.xml");
    if (! inputFile.open(QIODevice::ReadOnly))
      // error handling
    QFile outputFile("out.xml");
    if (! outputFile.open(QIODevice::WriteOnly))
      // error handling
    
    QXmlStreamReader inputStream(&inputFile);
    QXmlStreamWriter outputStream(&outputFile);
    
    while (! inputStream.atEnd())
    {
       inputStream.readNext();
       // manipulation logic goes here
       outputStream.writeCurrentToken(inputStream);
    }
    

    DOM 接口的示例代码:

    QFile inputFile("in.xml");
    if (! inputFile.open(QIODevice::ReadOnly))
      // error handling
    
    QDomDocument doc;
    if (! doc.setContent(&inputFile))
      // error handling
    
    // manipulation logic goes here
    
    QFile outputFile("out.xml");
    if (! outputFile.open(QIODevice::WriteOnly))
      // error handling
    
    outputFile.write(doc.toByteArray());
    

    【讨论】:

      猜你喜欢
      • 2011-06-04
      • 2015-06-22
      • 2012-07-07
      • 2015-12-22
      • 2016-02-09
      • 1970-01-01
      • 2013-09-02
      • 2010-09-30
      • 2011-07-29
      相关资源
      最近更新 更多