XmlStreamWriter

时间:2012-08-28 13:50:39

标签: xml qt xmlupdate

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

无论如何使用QXmlStreamWriter实现这一目标?如果是这样,请给我一个示例代码

1 个答案:

答案 0 :(得分: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());