protected virtual void Sanitize(HtmlReader htmlReader, TextWriter result) { BeforeDocument(result); var entity = string.Empty; while (htmlReader.Read()) { entity = htmlReader.Entity; switch (htmlReader.NodeType) { case HtmlNodeType.Element: CaseElement(htmlReader, result); break; case HtmlNodeType.EndElement: CaseEndElement(htmlReader, result); break; case HtmlNodeType.Text: CaseText(htmlReader, result); break; case HtmlNodeType.CDATA: CaseCData(htmlReader, result); break; } } // close unclosed tags while (_tags.Count > 0) { string tagName = PopTag(); CheckStack(); if (_enabled && !IgnoreTags.Contains(tagName)) { WriteEndElement(result, tagName); } } result.Write(entity); if (!string.IsNullOrEmpty(htmlReader.Name)) { result.Write("<{0}", htmlReader.Name); } AfterDocument(result); result.Flush(); }
protected virtual void Sanitize(HtmlReader htmlReader, TextWriter result) { BeforeDocument(result); var entity = string.Empty; while (htmlReader.Read()) { entity = htmlReader.Entity; switch (htmlReader.NodeType) { case HtmlNodeType.Element: CaseElement(htmlReader, result); break; case HtmlNodeType.EndElement: CaseEndElement(htmlReader, result); break; case HtmlNodeType.Text: CaseText(htmlReader, result); break; case HtmlNodeType.CDATA: CaseCData(htmlReader, result); break; } } // close unclosed tags while (_tags.Count > 0) { string tagName = PopTag(); CheckStack(); if (_enabled && !IgnoreTags.Contains(tagName)) { WriteEndElement(result, tagName); } } result.Write(entity); if (!string.IsNullOrEmpty(htmlReader.Name)) result.Write("<{0}", htmlReader.Name); AfterDocument(result); result.Flush(); }