White space is preserved in the output file only if XmlDocument.PreserveWhitespace is set to true.
The XmlDeclaration of the current XmlDocument object determines the encoding attribute in the saved document. The value of the encoding attribute is taken from the XmlDeclaration.Encoding property. If the XmlDocument does not have an XmlDeclaration, or if the XmlDeclaration does not have an encoding attribute, the saved document will not have one either.
When the document is saved, xmlns attributes are generated to persist the node identity (local name + namespace URI) correctly. For example, the following C# code
Example
XmlDocument doc = new XmlDocument(); doc.AppendChild(doc.CreateElement("item","urn:1")); doc.Save(Console.Out);
generates this xmls attribute <item xmls="urn:1"/>.
This method is a Microsoft extension to the Document Object Model (DOM).
Note that only the XmlDocument.Save(string) method enforces a well-formed XML document. All other Save overloads only guarantee a well-formed fragment.