How to get Xml as string from XDocument? How to get Xml as string from XDocument? xml xml

How to get Xml as string from XDocument?


You only need to use the overridden ToString() method of the object:

XDocument xmlDoc ...string xml = xmlDoc.ToString();

This works with all XObjects, like XElement, etc.


I don't know when this changed, but today (July 2017) when trying the answers out, I got

"System.Xml.XmlDocument"

Instead of ToString(), you can use the originally intended way accessing the XmlDocument content: writing the xml doc to a stream.

XmlDocument xml = ...;string result;using (StringWriter writer = new StringWriter()){  xml.Save(writer);  result = writer.ToString();}


Doing XDocument.ToString() may not get you the full XML.

In order to get the XML declaration at the start of the XML document as a string, use the XDocument.Save() method:

    var ms = new MemoryStream();    using (var xw = XmlWriter.Create(new StreamWriter(ms, Encoding.GetEncoding("ISO-8859-1"))))        new XDocument(new XElement("Root", new XElement("Leaf", "data"))).Save(xw);    var myXml = Encoding.GetEncoding("ISO-8859-1").GetString(ms.ToArray());