【发布时间】:2013-11-01 03:55:17
【问题描述】:
我正在尝试解析一个特定的 HTML 字符串,以便我可以提取一组由<br/> 换行符分隔的行。输入 HTML 如下所示:
<div class="PlainText">
DATE: 2013-10-28 20:00:43 -0500 <br/>
Item 1: Text1 <br/>
Item 1: Text1 <br/>
Item 1: Text1 <br/>
Item 1: Text1 <br/>
<br/> //Notice this has two break lines, i would like to stop after seeing two consecutive break lines.
</div>
在更大的 html 文档中使用这个 div,我可以得到HTML ChildNodes
List<HtmlNode> nodes = htmlDoc.DocumentNode
.Descendants("div")
.Where(x => x.Attributes.Contains("class") &&
x.Attributes["class"].Value.Contains("PlainText")).ToList();
我不完全确定从这里去哪里,我想阅读所有文本,直到我看到两条断线并停止?
编辑
我在 Visual Studio 运行时检查器中查看了 childNodes nodes 并注意到实际上没有两个连续的 <br/> 行,而是一个断行和一个 #text 标记,其 innerHTMl 为 \n 一个新行特点。
【问题讨论】:
-
真的吗?我看到两个 br 标签使用您发布的相同示例
-
输入 HTML 有两个 br 标签,但正如您从屏幕截图中看到的,以及我在调试
nodes返回的内容时检查得到的结果,它们之间有一个#text标签和一个 InnerHtml只读取一个换行符。 -
你关心换行吗?您的问题仅涉及 br 标签。如果换行有问题,您可以在其上使用字符串修剪
-
不,我不关心换行符,我想我会提到它,因为从技术上讲,它不是两个
br紧挨着的标签,而是它们之间的换行符 -
HtmlAgility 包将换行符视为文本字段的一部分(因为换行符只是文本,它们不是标签),所以它们真的没有区别
标签: c# parsing html-agility-pack