You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在同一XPath表达式中获取两个表格的行?(HtmlAgilityPack场景)

解决HtmlAgilityPack获取指定容器内表格行的问题

你的问题出在XPath的路径写法上!当你在main.SelectNodes("//table//tr")里用//开头时,它是从整个文档的根节点开始搜索,而不是限定在main这个节点的范围内,所以自然会返回文档中所有的<tr>元素。

要只获取main container下两个表格里的行,只需要把XPath改成相对路径即可,也就是在开头加上一个点.,表示从当前节点(也就是main)开始向下搜索:

HtmlNode main = doc.DocumentNode.SelectSingleNode("//div[@class='main container']");
HtmlNodeCollection rows = main.SelectNodes(".//table//tr");

额外的精确写法(可选)

如果你想更精准地限定在left和right这两个div下的表格,也可以用更具体的XPath,避免意外匹配到其他可能存在的表格:

HtmlNodeCollection rows = main.SelectNodes(".//div[@class='left' or @class='right']//table//tr");

这样就只会获取main节点下class为left或right的div内部表格里的所有行啦。

内容的提问来源于stack exchange,提问作者cojac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:32:55