アップデート
コメントで言ったように、ファイルの途中に挿入した方がいいとは思いません。ただし、追加のセキュリティが必要/必要な場合は、次の2つの追加手順をお勧めします。
- すべての重要なステップでxmlファイルの健全性チェックを実行します。これは、読んでいるファイルが本当に必要なものであることを確認する場所であれば何でもかまいません。
- 保存する前にファイル全体の内容のチェックサムを計算し、後でチェックします。これは必ずしもCRCである必要はありません。関数に名前を付けただけ
calculate_crc()
です。データの整合性を検証できるものはすべて良好です。
私はこれをおおよそ次のように行います(擬似コード):
TiXmlDocument doc( "demo.xml" );
doc.LoadFile();
perform_sanitycheck(doc);
// do whatever you need to change
perform_sanitycheck(doc);
unsigned int crc = calculate_crc(doc);
doc.SaveFile("temp_name.xml"); // save the file under another name
TiXmlDocument doc2( "temp_name.xml" );
perform_sanitycheck(doc2);
if(verify_crc(doc, crc))
{
delete_file("demo.xml");
rename_file("temp_name.xml", "demo.xml");
}
健全性チェックは、必要に応じて適切なアクションを実行します。delete_file()
環境に合わせて、2つの関数とAPIまたはライブラリ関数を置き換える必要がありrename_file()
ます。
機能calculate_crc()
とverify_crc()
は、変更が必要な部分のみをチェックするように特別に作成することができます。