Perhaps you can create two XmlDocument objects. One will contain your new root node, the other will contain the data stored in the existing file. Remember to close the file after you load it's contents into the XmlDocument object.
Then, just import the nodes from the second object under the new root node of the first. When you're done, dump the contents of the first object back into your existing file.
I haven't used C# before, but I'm surprised that C#'s XmlDocument can parse your original XML file since it's technically not valid XML -- your example contains two root nodes. Perhaps C# creates an implicit root node to contain malformed documents such as yours. If this is the case, you might be able to modify the properties of this root node.
Another possibility is to create a root node, and traverse the rest of the node structure and copy (clone) the existing node tree under your new root node, then delete the original nodes. I didn't see any methods in the C# XmlDocument API docs to suggest you can "move" a node, but it really wouldn't make sense to provide this functionality.
It does make sense, however, to throw an error when calling InsertBefore() on a root node, since that function creates a sibling node, and XML doesn't allow for multiple root nodes in a document.
Take care,
Nik
http://www.bigaction.org/