private static void Plain(StringBuilder builder, ref ToPlainTextState state, IEnumerable <XNode> nodes) { foreach (var node in nodes) { if (node is XElement) { var element = (XElement)node; var tag = element.Name.LocalName.ToLower(); if (tag == "br") { builder.AppendLine(); state = ToPlainTextState.StartLine; } else if (NonVisibleTags.Contains(tag)) { } else if (InlineTags.Contains(tag)) { Plain(builder, ref state, element.Nodes()); } else { if (state != ToPlainTextState.StartLine) { builder.AppendLine(); state = ToPlainTextState.StartLine; } Plain(builder, ref state, element.Nodes()); if (state != ToPlainTextState.StartLine) { builder.AppendLine(); state = ToPlainTextState.StartLine; } } } else if (node is XText) { var text = (XText)node; Process(builder, ref state, text.Value.ToCharArray()); } } }
private static void Plain(StringBuilder builder, ref ToPlainTextState state, IEnumerable <HtmlAgilityPack.HtmlNode> nodes) { foreach (var node in nodes) { if (node is HtmlAgilityPack.HtmlTextNode) { var text = (HtmlAgilityPack.HtmlTextNode)node; Process(builder, ref state, HtmlAgilityPack.HtmlEntity.DeEntitize(text.Text).ToCharArray()); } else { var tag = node.Name.ToLower(); if (tag == "br") { builder.AppendLine(); state = ToPlainTextState.StartLine; } else if (NonVisibleTags.Contains(tag)) { } else if (InlineTags.Contains(tag)) { Plain(builder, ref state, node.ChildNodes); } else { if (state != ToPlainTextState.StartLine) { builder.AppendLine(); state = ToPlainTextState.StartLine; } Plain(builder, ref state, node.ChildNodes); if (state != ToPlainTextState.StartLine) { builder.AppendLine(); state = ToPlainTextState.StartLine; } } } } }