WP All Import XPath多条件筛选无结果:表达式问题排查
你的XPath逻辑优先级踩坑啦!
我一眼就看出问题出在逻辑运算符的优先级上——XPath里and的优先级比or高,你写的表达式会被解析器自动拆解成这个逻辑:
(/product[dim1[1] = "1" and stock_indicator[1] > 3 and group[1] = "1"]) OR (/product[group/category/id[1] = "4"])
这完全不符合你的需求啊!它变成了两种情况:要么是满足前两个库存条件+组1的产品,要么是不管库存情况只要属于组4的产品。但显然你的数据里,组4的产品可能不满足前两个库存要求,而同时符合前两个条件+组1的产品又不存在,所以自然返回空结果。
正确的XPath写法
你需要用括号把「组1或组4」的条件包裹起来,强制让这个组合条件先运算,再和前两个库存条件做and判断,这样才符合你要的「三个条件同时满足」的逻辑:
/product[dim1[1] = "1" and stock_indicator[1] > 3 and (group[1] = "1" or group/category/id[1] = "4")]
额外排查小技巧
如果改完还是没结果,可以拆分条件单独测试:
- 先测
/product[dim1[1] = "1"],确认有库存的产品能被正常选中 - 再测
/product[stock_indicator[1] > 3],这里要注意:如果stock_indicator在XML里是字符串类型,可能需要用number(stock_indicator[1]) > 3来强制转成数字比较 - 最后测
/product[group[1] = "1" or group/category/id[1] = "4"],确认组1和组4的产品能被识别到
这样一步步排查,就能快速定位哪个子条件出了问题。
内容的提问来源于stack exchange,提问作者Eddie
相关产品推荐
相关产品推荐

