节点选择 - 当前节点深度的两个标签

Node Selection - Two Tags Deep from Current Node

我正在使用 HTML 敏捷包。我有一个 HTMLNode 具有以下 InnerHtml:

"Item: <b><a href="item.htm">Link Text</a></b>"

从这个节点开始,我想从 "a" 标签中 select "Link Text"。我没能做到这一点。我试过这个:

System.Diagnostics.Debug.WriteLine(node.InnerHtml);
//The above line prints "Item: <b><a href="item.htm">Link Text</a></b>"
HtmlNode boldTag = node.SelectSingleNode("b");
if (boldTags != null)
{
    HtmlNode linkTag = boldTag.SelectSingleNode("a");
    //This is always null!
    if (linkTag != null)
    {
        return linkTag.InnerHtml;           
    }
}

如能帮助 select 离子正确,我们将不胜感激。

SelectSingleNode 需要一个 XPath

所以你需要

 var b = htmlDoc.DocumentNode.SelectSingleNode("//b");
 var a = b.SelectSingleNode("./a");
 var text = a.InnerText;

一行

var text =  htmlDoc.DocumentNode.SelectSingleNode("//b/a").InnerText;

注意在xpath的开头

  • // 将在 DocumentNode
  • 中的任何地方查找
  • .// 会寻找当前节点的后代
  • / 将查找 DocumentNode
  • 的子节点
  • ./ 会寻找当前节点的子节点