我有列表名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;
我有列表名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;
目前尚不清楚爲什麼在您嘗試的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);
輸出:
ABC.rar
點的含義是什麼? –
@AvinashRaj''引用了當前上下文節點,在這種情況下是'td',當在像contains()或者starts-with()函數那樣的字符串操作中使用時,上下文節點將隱含地轉換爲字符串,就好像在添加代碼後調用了string()函數 – har07
一樣,它顯示錯誤:未將對象引用設置爲對象的實例 –
你的正則表達式應該是'/([A-Z] + \。rar)/ g' – Shayan
@shayanypn這不是正則表達式,它是XPATH。 –