public static string ToString([NotNull] this XmlElement that, XmlPrintMode mode) { var removed = false; var xml = new XmlDocument().Parse(that.OuterXml).DocumentElement; foreach (var attr in xml.Attributes.Cast <XmlAttribute>().ToArray()) { if (attr.Prefix != "") { removed = true; xml.Attributes.Remove(attr); } } return(ToStringInner(xml, mode, removed)); }
private static string ToStringInner(XmlElement that, XmlPrintMode mode, bool removed) { var removedText = removed ? " ... " : ""; var xml = that.OuterXml; var prefix = xml.Substring(0, xml.IndexOf('>')).TrimEnd(); switch (mode) { case XmlPrintMode.Default: return(prefix + removedText + xml.Substring(xml.IndexOf('>'))); case XmlPrintMode.HeaderOnly: return(prefix + removedText + ">"); case XmlPrintMode.WithoutChildren: return(prefix.Trim(" /".ToCharArray()) + removedText.TrimEnd() + " />"); default: throw new NotImplementedException(); } }