我在结构页面中有多个链接:
<a ....>
<b>Text I Need</b>
Also Text I need
</a>
我想从上面的代码中提取字符串“Text I NeedAlso Text I I need” 我成功提取了第二部分,但我不确定如何选择b标签内的文本,目前我正在使用它:
var link_list = doc.DocumentNode.SelectNodes(@"/a/text()");
foreach (var link in link_list)
{
Console.WriteLine(link.InnerText);
}
我是否可能反而得到不是文本而是html和删除带有正则表达式的标签然后提取文本,还是有其他方法?
答案 0 :(得分:1)
访问InnerText
的{{1}}属性应该会立即为您提供所有文本节点:
<a>
或者如果您确实只需要获得直接子文本节点和大子文本节点,请尝试以下方式:
var html = @"<a ....>
<b>Text I Need</b>
Also Text I need
</a>";
var doc = new HtmlDocument();
doc.LoadHtml(html);
var link_list = doc.DocumentNode.SelectNodes("/a");
foreach (var link in link_list)
{
Console.WriteLine(link.InnerText);
}
输出
var link_list = doc.DocumentNode.SelectNodes("/a");
foreach (var link in link_list)
{
var texts = link.SelectNodes("text() | */text()");
Console.WriteLine(String.Join("", texts.Select(o => o.InnerText)));
}