0

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

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

4

1 回答 1

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());
于 2012-08-28T14:26:38.407 回答