【发布时间】:2013-05-10 05:13:59
【问题描述】:
我有一个如下所示的 html 文件
<div>
<div style="margin-left:0.5em;">
<div class="tiny" style="margin-bottom:0.5em;">
<b><span class="h3color tiny">This review is from: </span>You Meet</b>
</div>
If you know Ron Kaufman as I do ...
<br /><br />Whether you're the CEO....
<br /><br />Written in a distinctive, ...
<br /><br />My advice? Don't just get one copy
<div style="padding-top: 10px; clear: both; width: 100%;"></div>
</div>
<div style="margin-left:0.5em;">
<div class="tiny" style="margin-bottom:0.5em;">
<b><span class="h3color tiny">This review is from: </span>My Review</b>
</div>
I became a fan of Ron Kaufman after reading an earlier book of his years ago...
<div style="padding-top: 10px; clear: both; width: 100%;"></div>
</div>
</div>
我想获得没有任何 html 标记的评论文本。 我现在使用下面的代码
foreach (HtmlNode divReview in doc.DocumentNode.SelectNodes(@"//div[@style='margin-left:0.5em;']"))
{
if (divReview != null)
{
review.Add(divReview.Descendants("div").Where(d => d.Attributes.Contains("style") &&
d.Attributes["style"].Value.Contains("padding-top: 10px; clear: both; width: 100%;")).
Select(d =>
d.PreviousSibling.InnerText.Trim()).SingleOrDefault());
}
}
只返回“我的建议?不要只得到一份”,我怎样才能得到整个文本?
更新:即使我删除所有
"br"
来自 htmlnode 的标签,仍然在使用上述代码时,我只得到“我的建议?不要只得到一份”部分!!!有什么意见吗?
【问题讨论】:
-
我不能使用 TakeWhile 或类似的东西来获取所有文本吗??
-
定义一个“没有任何html标签的文本”?
-
我的示例中的文本“如果你像我一样认识 Ron Kaufman...”只属于 htmlpage 顶部的一个 div,所以在我的 htmlnode 中它实际上没有任何标签
-
这不是 HTML 术语中的定义。所有文本节点都是父节点的子节点。
-
是的,这很奇怪,但无论如何我都需要这样做。
标签: c# html xpath html-agility-pack