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

如何将两个XPath合并为单个节点集合?

合并两个XPath查询结果为单个列表

方法一:使用XPath并集运算符|

XPath里合并两个节点集的标准写法就是用|,你之前的思路是对的,可能是书写细节问题导致没生效,正确代码如下:

var combinedNodes = document.DocumentNode.SelectNodes("//div[@class='pad-hrz-xs']/a[@data-zone='title'] | //div[@class='card-v2-pricing']/p[@class='product-new-price']");

如果还是没得到预期结果,先排查几点:

  • 确认HTML里的class、属性名没有拼写错误(比如大小写、多余空格)
  • 检查两类节点确实存在于当前文档中
  • 你的HtmlAgilityPack版本是否对XPath 1.0并集操作支持正常

方法二:用LINQ合并两个结果集

如果XPath方式始终不生效,直接用LINQ合并两个独立查询的结果更稳妥,还能避免null引用问题:

// 先获取两个节点集,为空时初始化空集合
var processorTitles = document.DocumentNode.SelectNodes("//div[@class='pad-hrz-xs']/a[@data-zone='title']") ?? new HtmlNodeCollection(null);
var processorsPrices = document.DocumentNode.SelectNodes("//div[@class='card-v2-pricing']/p[@class='product-new-price']") ?? new HtmlNodeCollection(null);

// 合并为单个列表
var combinedNodes = processorTitles.Cast<HtmlNode>().Concat(processorsPrices.Cast<HtmlNode>()).ToList();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:10:48