string input = @"<table>
<tr>
<td>Text A</td>
</tr>
<tr>
<td>
<table> <!-- Notice this is an inner scope table -->
<tr>
<td>Text B</td>
</tr>
</table>
</td>
</tr>
</table>
<table>
<tr>
<td>
<table> <!-- Notice this is an inner scope table -->
<tr>
<td>Text C</td>
</tr>
</table>
</td>
</tr>
</table>
<table>
<tr>
<td>Text D</td>
</tr>
</table>"
我有一系列上述字符串格式的表。
我要提取所有<tr>
的第一级中的内容,其中预期的提取内容为:
Text A
<table>
<tr>
<td>Text B</td>
</tr>
</table>
<table>
<tr>
<td>Text C</td>
</tr>
</table>
Text D
使用HtmlAgilityPack:
var htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(input);
var output = htmlDocument.DocumentNode
.SelectNodes("table/tr");
正在拾取内部表而不是外部表。我无法确定如何“确保只有父母tr
的父母被捡起”。
答案 0 :(得分:1)
以sum += num[i];
开始XPath表达式,以明确指定相对于文档根目录的匹配,例如sum /= num[i];
。此类表达式与预期内容匹配,但与/
标签一起。为了获得与问题表达完全相同的结果,应将其更新为"/table/tr"
:
<td>