如何在HTML + HTML中获取接下来的2个节点
本文关键字:HTML 接下来 2个 节点 获取 | 更新日期: 2023-09-27 17:56:09
我在下面的HTML代码中有一个表格:
<table style="padding: 0px; border-collapse: collapse;">
<tr>
<td><h3>My Regional Financial Office</h3></td>
</tr>
<tr>
<td> </td>
</tr>
<tr>
<td><h3>My Address</h3></td>
</tr>
<tr>
<td>000 Test Ave S Ste 000</td>
</tr>
<tr>
<td>Golden Valley, MN 00000</td>
</tr>
<tr>
<td><a href="javascript:submitForm('0000','0000000');">Get Directions</a></td>
</tr>
<tr>
<td> </td>
</tr>
</table>
如何在包含文本"我的地址"的表格行之后获取接下来 2 个<tr>
标签的内部文本?
您可以使用
以下 XPath:
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
var tdOfInterests =
htmlDoc.DocumentNode
.SelectNodes("//tr[td/h3[.='My Address']]/following-sibling::tr[position() <= 2]/td");
foreach (HtmlNode td in tdOfInterests)
{
//given html input in question following code will print following 2 lines:
//000 Test Ave S Ste 000
//Golden Valley, MN 00000
Console.WriteLine(td.InnerText);
}
上述 XPath 的关键是将following-sibling
与position()
过滤器一起使用。
更新:
关于这个答案中使用的XPath的一些解释:
//tr[td/h3[.='My Address']]
上面的部分选择<tr>
具有以下功能的元素:
- 具有值等于的子元素
<h3>
的子<td>
元素"我的地址"
/following-sibling::tr[position() <= 2]
下一部分 选择以下<tr>
元素,位置为<=2 的元素,距离当前<tr>
元素(上一个 XPath 零件选择的元素)
/td
最后一部分从当前<tr>
元素中选择子元素<td>