Why are you trying to recreate the Root? you don't really need to do that. Just do something like this
XmlSerializer xmlFormat = new XmlSerializer(item.Value.GetType());
using (Stream fs = new FileStream(@"D:\Test.xml", FileMode.Open, FileAccess.Write, FileShare.None))
{
xmlFormat.Serialize(fs, item.Value);
}
That will append the serialised object to the stated file. If you are unsure whether the file has been created yet just use
using(Stream fs = new FileStream(fileName, FileMode.OpenOrCreate,FileAccess.Write,FileShare.None))
instead, and that will create the file if it does not exist.
Hope this helps