2016-04-23 19 views
2

我有列表名html文檔是這樣的:找到任何inntertext定製前綴HtmlAgilityPack

<tr> 
<td>ABC.rar</td> 
<td>XYZ.zip</td> 
<td>DEF.MP4</td> 
</tr> 

我怎樣才能找到文件ABC.rar只需添加前綴ABC

string innerText = document2.DocumentNode.SelectSingleNode("//td[2]//a[.='ABC']").InnerText; 
+0

你的正則表達式應該是'/([A-Z] + \。rar)/ g' – Shayan

+0

@shayanypn這不是正則表達式,它是XPATH。 –

回答

4

目前尚不清楚爲什麼在您嘗試的XPath中有a,而示例HTML中沒有<a>元素。不管怎樣,下面是兩個可能的XPath找到<td>包含關鍵字'ABC':兩者之間

//td[contains(.,'ABC')] 
//td[starts-with(.,'ABC')] 

差異應該是不言自明給正在使用一個明確的函數名。如果我正確理解前綴的含義,我認爲starts-with()與比較合適。


演示:

var html = @"<tr> 
<td>ABC.rar</td> 
<td>XYZ.zip</td> 
<td>DEF.MP4</td> 
</tr>"; 

var document2 = new HtmlDocument(); 
document2.LoadHtml(html); 
string innerText = document2.DocumentNode 
          .SelectSingleNode("//td[starts-with(.,'ABC')]") 
          .InnerText; 
Console.WriteLine(innerText); 

dotnetfiddle demo

輸出:

ABC.rar 
+0

點的含義是什麼? –

+0

@AvinashRaj''引用了當前上下文節點,在這種情況下是'td',當在像contains()或者starts-with()函數那樣的字符串操作中使用時,上下文節點將隱含地轉換爲字符串,就好像在添加代碼後調用了string()函數 – har07

+0

一樣,它顯示錯誤:未將對象引用設置爲對象的實例 –