using Newtonsoft.Json.Schema;
public static void Main()
var xmlMin = new XMLMinifier(XMLMinifierSettings.Aggressive);
string Xml = @"<?xml version='1.0' standalone='no'?>
<url>http://www.google.com</url>
<url>http://www.yahoo.com</url>
Console.WriteLine(xmlMin.Minify(Xml));
private XMLMinifierSettings _minifierSettings;
public XMLMinifier(XMLMinifierSettings minifierSettings)
_minifierSettings = minifierSettings;
public string Minify(string xml)
var originalXmlDocument = new XmlDocument();
originalXmlDocument.PreserveWhitespace =
!(_minifierSettings.RemoveWhitespaceBetweenElements ||
_minifierSettings.RemoveEmptyLines);
originalXmlDocument.Load(new MemoryStream(Encoding.UTF8.GetBytes(xml)));
if (_minifierSettings.RemoveComments)
foreach (XmlNode comment in originalXmlDocument.SelectNodes("//comment()"))
comment.ParentNode.RemoveChild(comment);
if (_minifierSettings.CloseEmptyTags)
foreach (XmlElement el in
originalXmlDocument.SelectNodes("descendant::*[not(*) and not(normalize-space())]"))
if (_minifierSettings.RemoveWhitespaceBetweenElements)
return originalXmlDocument.InnerXml;
var minified = new MemoryStream();
originalXmlDocument.Save(minified);
return Encoding.UTF8.GetString(minified.ToArray());
public class XMLMinifierSettings
public bool RemoveEmptyLines { get; set; }
public bool RemoveWhitespaceBetweenElements { get; set; }
public bool CloseEmptyTags { get; set; }
public bool RemoveComments { get; set; }
public static XMLMinifierSettings Aggressive
return new XMLMinifierSettings
RemoveWhitespaceBetweenElements = true,
public static XMLMinifierSettings NoMinification
return new XMLMinifierSettings
RemoveEmptyLines = false,
RemoveWhitespaceBetweenElements = false,