0

私は Qt の初心者であり、Qt 4 と QxmlStreamwriter を使用して xml ファイルを更新 (新しいノードと属性を追加) したいのですが、Append open モードは 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 に答える