/// <summary> /// Utility for properly printing the end tag for an element. /// This utility takes care of including/suppressing end tags for empty nodes properly. /// </summary> /// <param name="writer"></param> /// <param name="element"></param> private static void printElementEnd(HtmlWriter writer, IHTMLElement element) { // No tagName, no end tag. if (string.IsNullOrEmpty(element.tagName)) { return; } if (ElementFilters.RequiresEndTag(element)) { writer.WriteEndElement(true); } else { writer.WriteEndElement(false); } }
private static string BalanceHtml(string html) { StringBuilder sb = new StringBuilder(html.Length + 10); SimpleHtmlParser parser = new SimpleHtmlParser(html); Element el; while (null != (el = parser.Next())) { if (el is BeginTag) { BeginTag bt = (BeginTag)el; if (!ElementFilters.RequiresEndTag(bt.Name)) { bt.Complete = true; } } sb.Append(el.ToString()); } return(sb.ToString()); }