2016-02-19 144 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