Я хочу сохранить единственный объект XMLDocument в классе и позволить методам внести изменения в него и сохранить его.
using (FileStream fs = new FileStream(@"D:\Diary.xml",
FileMode.Open, FileAccess.ReadWrite, FileShare.Read))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(fs);
.... make some changes here
xmlDoc.Save(fs);
}
Вышеупомянутый код делает две копии структуры XML в файле.
Попробуйте
fs.SetLength(0);
прежде чем сохранить вызов
В качестве альтернативы даже это сработает ...
XmlDocument xmlDoc = new XmlDocument( );
xmlDoc.Load( @"D:\Diary.xml" );
//.... make some changes here
XmlText node = xmlDoc.CreateTextNode( "test" );
xmlDoc.DocumentElement.AppendChild( node );
xmlDoc.Save( @"D:\Diary.xml" );
Кажется немного странным, что fs.Position из решения Foole не работает.
Эквивалентом может быть
fs.Seek(0, SeekOrigin.Begin);
Альтернатива
вместо использования того же потока файлов:
//OrigPath is the path you're using for the FileReader
System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(OrigPath);
xmlDoc.Save(writer);
writer.Close();