xml ファイルを含む zip ファイルがあります。ファイルを抽出せずに、この xml ファイルを xml ドキュメントにロードしています。これはストリームを介して行われます。その後、いくつかのノードの内部テキストを変更しています。問題は、ストリームを保存しようとした後に前述の例外が発生することです。コードは次のとおりです。
(ここではDotNetZipを使用しています)
ZipFile zipFile = ZipFile.Read(zipPath); // the path is my desktop
foreach (ZipEntry entry in zipFile)
{
if (entry.FileName == "myXML.xml")
{
//creating the stream and loading the xml doc from the zip file:
Stream stream = zipFile[entry.FileName].OpenReader();
XmlReader xReader = XmlReader.Create(stream);
XmlDocument xDoc = new XmlDocument();
xDoc.Load(xReader);
//changing the inner text of the doc nodes:
xDoc.DocumentElement.SelectSingleNode("Account/Name").InnerText = "VeXe";
xDoc.DocumentElement.SelectSingleNode("Account/Money").InnerText = "Million$";
xDoc.Save(stream); // here's where I got the exception.
break;
}
}
私はプロのコーダーではありませんが、パラメーターとして axDoc.Save(stream);
も取ることができることに気づいた代わりにXmlWriter
、XmlReader をインスタンス化した直後に XmlWriter のインスタンスを作成してみまし
た
.xDoc.Save(XmlWriter)
のように:「読んだ後に書くことができません」
xDoc を正常に保存するにはどうすればよいですか?
追加: 一時フォルダーなどの他の場所にxmlファイルを保存し、その保存したファイルをzipに追加して古いファイルを上書きし、一時にxmlファイルを削除するという考えがありました..しかし、それは私がしたことではありませんしたい、zipファイルを直接扱いたい、出入りする、サードパーティなし。