Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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# Html敏捷包Xpath_C#_Xpath_Html Agility Pack - Fatal编程技术网

C# Html敏捷包Xpath

C# Html敏捷包Xpath,c#,xpath,html-agility-pack,C#,Xpath,Html Agility Pack,如何将此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();

如何将此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:


  • 测试1测试1文本
  • Test2Test2文本

我需要在xPath中提取“Test2文本”,而不使用特定的ul标记。

您可以尝试使用此xPath:

(//div[@class='test']//text()[normalize-space()])[last()]
//div[@class='test']//text()[normalize-space()]
查找
div
中的所有非空文本节点。然后,
[last()]
只返回所有找到的文本节点中的最后一个节点

工作演示示例(在线查看)

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

显示一些源html以及描述您想要的结果将很有帮助。
Test2 Text