using System.Collections.Generic;
using System.Xml.Serialization;
using System.IO.Compression;
public static void Test()
var xml = @"<foo Name=""hello""><bar Id=""101"">var value</bar></foo>";
Console.WriteLine("Input XML: {0}", xml);
XmlDocument doc = new XmlDocument();
Console.WriteLine(doc.GetOuterXml(quoteChar : '\''));
public static partial class XmlSerializationHelper
public static string GetOuterXml(this XmlDocument doc, bool indent = true, char quoteChar = '"')
using (var textWriter = new StringWriterWithEncoding())
using (var xmlWriter = new XmlTextWriter(textWriter) { Formatting = indent ? Formatting.Indented : Formatting.None, QuoteChar = quoteChar })
return textWriter.ToString();
public sealed class StringWriterWithEncoding : StringWriter
public StringWriterWithEncoding() : this(Encoding.UTF8) { }
public StringWriterWithEncoding(Encoding encoding) => this.Encoding = encoding;
public override Encoding Encoding { get; }
public static void Main()
Console.WriteLine("Environment version: {0} ({1}, {2})", System.Runtime.InteropServices.RuntimeInformation.FrameworkDescription , Environment.Version, Environment.OSVersion);
Console.WriteLine("Failed with unhandled exception: ");