Html 敏捷包 Xpath
Html Agility Pack Xpath
如何将此 xPath 与 Html Agility Pack 一起使用?
xPath:
//div[@class='test']/(text())[last()]
我试过这个代码:
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='test']/(text())[last()]"))
{
test = node.InnerText();
}
Html:
<div class="test">
<ul>
<li><b>Test1</b>Test1 Text</li>
<li><b>Test2</b>Test2 Text</li>
</ul>
</div>
我需要提取 "Test2 Text" 而无需在 xPath 中指定 ul 标记。
您可以尝试使用这个 XPath :
(//div[@class='test']//text()[normalize-space()])[last()]
//div[@class='test']//text()[normalize-space()]
查找 div
中的所有 非空文本节点 。然后,[last()]
return 只有所有找到的文本节点中的最后一个节点。
工作演示示例(在线查看here):
var html = @"<div class='test'>
<ul>
<li><b>Test1</b>Test1 Text</li>
<li><b>Test2</b>Test2 Text</li>
</ul>
";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
HtmlNode node = doc.DocumentNode.SelectSingleNode("(//div[@class='test']//text()[normalize-space()])[last()]");
Console.WriteLine(node.InnerText);
输出:
Test2 Text
如何将此 xPath 与 Html Agility Pack 一起使用?
xPath:
//div[@class='test']/(text())[last()]
我试过这个代码:
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//div[@class='test']/(text())[last()]"))
{
test = node.InnerText();
}
Html:
<div class="test">
<ul>
<li><b>Test1</b>Test1 Text</li>
<li><b>Test2</b>Test2 Text</li>
</ul>
</div>
我需要提取 "Test2 Text" 而无需在 xPath 中指定 ul 标记。
您可以尝试使用这个 XPath :
(//div[@class='test']//text()[normalize-space()])[last()]
//div[@class='test']//text()[normalize-space()]
查找 div
中的所有 非空文本节点 。然后,[last()]
return 只有所有找到的文本节点中的最后一个节点。
工作演示示例(在线查看here):
var html = @"<div class='test'>
<ul>
<li><b>Test1</b>Test1 Text</li>
<li><b>Test2</b>Test2 Text</li>
</ul>
";
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(html);
HtmlNode node = doc.DocumentNode.SelectSingleNode("(//div[@class='test']//text()[normalize-space()])[last()]");
Console.WriteLine(node.InnerText);
输出:
Test2 Text