Get InnerXml without changing the spacing
// Copyright ? Microsoft Corporation. // This source file is subject to the Microsoft Permissive License. // See http://www.microsoft.com/resources/sharedsource/licensingbasics/sharedsourcelicenses.mspx. // All other rights reserved. using System; using System.Text; using System.Xml; using System.Xml.Xsl; using System.Xml.XPath; using System.Diagnostics; using System.Collections.Generic; namespace Microsoft.Ddue.Tools { public static class BuildComponentUtilities { // get InnerXml without changing the spacing public static string GetInnerXml (XPathNavigator node) { // check for null argument, and clone so we don't change input if (node == null) throw new ArgumentNullException("node"); XPathNavigator current = node.Clone(); // create appropriate settings for the output writer XmlWriterSettings settings = new XmlWriterSettings(); settings.ConformanceLevel = ConformanceLevel.Fragment; settings.OmitXmlDeclaration = true; // construct a writer for our output StringBuilder builder = new StringBuilder(); XmlWriter writer = XmlWriter.Create(builder, settings); // write the output bool writing = current.MoveToFirstChild(); while (writing) { current.WriteSubtree(writer); writing = current.MoveToNext(); } // finish up and return the result writer.Close(); return(builder.ToString()); } } }