查找任何具有自定义前缀 HtmlAgilityPack 的内部文本
Find any inntertext have custom prefix HtmlAgilityPack
我有这样的列表名称文件 html :
<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>
元素。无论如何,以下是找到包含关键字 'ABC'
的 <td>
的两个可能的 XPath:
//td[contains(.,'ABC')]
//td[starts-with(.,'ABC')]
只要使用了明确的函数名称,两者之间的区别应该是不言自明的。如果我正确理解 prefix 的意思,我怀疑 starts-with()
比 contains()
.
更合适
演示:
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
我有这样的列表名称文件 html :
<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>
元素。无论如何,以下是找到包含关键字 'ABC'
的 <td>
的两个可能的 XPath:
//td[contains(.,'ABC')]
//td[starts-with(.,'ABC')]
只要使用了明确的函数名称,两者之间的区别应该是不言自明的。如果我正确理解 prefix 的意思,我怀疑 starts-with()
比 contains()
.
演示:
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