2016-02-19 103 views
1

如何将这个xPath与Html Agility Pack一起使用?Html Agility Pack Xpath

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的文本” 没有特定的UL标签xPath。

+0

显示一些HTML源代码以及描述你想要的结果将是有帮助的。 –

回答

3

您可以尝试使用这个XPath:

(//div[@class='test']//text()[normalize-space()])[last()] 

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

工作演示的例子(看到它在线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