节点选择 - 当前节点深度的两个标签
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
的子节点
- ./ 会寻找当前节点的子节点
我正在使用 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 的子节点
- ./ 会寻找当前节点的子节点