Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 节点'的文本;s内部文本和第一个子节点文本_C#_Html Agility Pack - Fatal编程技术网

C# 节点'的文本;s内部文本和第一个子节点文本

C# 节点'的文本;s内部文本和第一个子节点文本,c#,html-agility-pack,C#,Html Agility Pack,我在页面结构中有多个链接,如下所示: <a ....> <b>Text I Need</b> Also Text I need </a> 我是否应该取而代之的不是文本而是a的html,然后用regex删除标记并提取文本,或者是否有其他方法?访问的InnerText属性应立即为您提供所有文本节点: var html = @"<a ....> <b>Text I Need</b> A

我在页面结构中有多个链接,如下所示:

<a ....>
    <b>Text I Need</b>
    Also Text I need
</a>

我是否应该取而代之的不是文本而是a的html,然后用regex删除标记并提取文本,或者是否有其他方法?

访问
InnerText
属性应立即为您提供所有文本节点:

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);
}
输出:

Text I Need
Also Text I need

这似乎对我有用。请看奇怪,因为对我来说,它只是给出了不在b标记中的部分,但是从xpath中删除“/text()”解决了它刚刚意识到我的错误是将“/text()”放在xpath中,谢谢。
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)));
}
Text I Need
Also Text I need