0

次のような XmlSerializer を使用してファイルに書き込まれる XmlTextWriter があります。

using (XmlTextWriter writer = new XmlTextWriter(path, null))
{
   writer.Formatting = Formatting.Indented;
   writer.Indentation = 3;
   MyFileObj.ourSerializer.Serialize(writer, xmlFile, ourXmlNamespaces);
}

ここで、「ourSerializer」は System.Xml.Serialization.XmlSerializer オブジェクトへの単なる参照です。ただし、エンド ユーザーがコンテンツを読み取れないように、この XML をディスクに暗号化する必要があるインスタンスがあり、このコードが呼び出される場所が多数あるため、既存のコードを使用してそれを処理する適切な方法がわかりません。暗号化する必要はありません。誰かが私のためにこれについて洞察を与えることができますか?

4

2 に答える 2

0

これが私が問題を解決した方法です:

MemoryStream ms = new MemoryStream();
XmlSerializer ourSerializer.Serialize(ms, xmlFile, ourXmlNamespaces);
ms.Position = 0;
//Encrypt the memorystream
using (TextReader reader = new StreamReader(ms, Encoding.ASCII))
using (StreamWriter writer = new StreamWriter(path))
{
   string towrite = Encrypt(reader.ReadToEnd());
   writer.Write(towrite);
}

基本的に、XML を MemoryStream にシリアル化し、テキストを TextReader に読み戻し、TextReader の内容を暗号化し、結果の暗号化された文字列をファイルに保存しました。

于 2013-01-11T15:08:09.187 に答える