I have a very basic XML structure/file on disk which is something like:
<root>
<data timestamp="dd-mm-yyyy" type="comment">kdkdkdk</data>
<data timestamp="dd-mm-yyyy" type="event">kdkdkdkgffgfdgf</data>
<data timestamp="dd-mm-yyyy" type="something">kddsdsfsdkdkdk</data>
</root>
The XML will be, as mentioned, in an external file on disk. As the file might grow fairly large (actually gets 'trimmed' every couple of weeks), I don't want to load the XML file first to add a new node...
Is there a way to add a new node like this? it can be just added to the top/bottom etc, as the process that actually uses the XML sorts it by timestamp anyway..
I'm guessing a crude way is to append the node as text.. however I think that would add the node AFTER the end tag??
Any ideas gratefully received.. David.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With