I have a very basic XML structure/file on disk which is something like:
kdkdkdk
There are a a number of decent answers here already, however just to put another spin on this, are you sure this data needs to be stored as an XML file?
The data you are storing looks fairly simple (i.e a record with three fields, date, type and some string data. If you do not need any of the added benefits that XML provides (see here) then why not just use basic CSV? That way you can just keep appending to it just like a log file via File.AppendText("filename")
.
(Hell, it might even be possible to use something like log4net to manage the logging and any clean up housekeeping.)
Not with any XML API or tool.
You could open the file as Text, find the Position of </root>
and start overwriting from there. And of course add the </root>
again.
A quick and dirty approach, this is not very robust:
====
string closeTag = "</root>";
int closeLength = Encoding.UTF8.GetBytes(closeTag).Length;
var fs = System.IO.File.Open(filename, System.IO.FileMode.Open);
fs.Position = fs.Length - closeLength;
var writer = new StreamWriter(fs); // after the Position is set
writer.WriteLine(newTag);
writer.Write(closeTag); // NOT WriteLine !!
writer.Close();
fs.Close();
And of course you know about using using() {}
blocks.