如何使用XPath根据制造商名称筛选XML中所有对应产品
XPath查询解决方案
针对你提供的XML结构,你可以直接使用带谓语筛选的XPath语句定位符合条件的完整product节点,不需要额外处理节点内的CDATA内容,XPath的文本匹配规则可以直接读取CDATA包裹的文本值。
基础查询语句(精确匹配)
如果你要筛选制造商名称为RINGKE的所有产品,直接使用以下语句:
//product[manufacturer_name = 'RINGKE']
语句解释:
//product:匹配文档中所有层级的product节点,你也可以写完整路径/products/product缩小查询范围,性能更好- 方括号
[]是筛选谓语,只会保留满足括号内条件的节点 manufacturer_name = 'RINGKE':筛选条件是当前product节点下的manufacturer_name子节点文本值等于RINGKE,CDATA包裹的内容会被自动识别为普通文本,不需要额外处理
可选扩展用法
- 如果你需要不区分大小写匹配(比如同时匹配Ringke、RINGKE、ringke),XPath 2.0及以上版本可以使用:
如果你使用的是XPath 1.0环境,可以用translate函数实现大小写转换效果//product[lower-case(manufacturer_name) = 'ringke'] - 如果要动态替换制造商名称,只需要修改单引号内的目标值即可,比如要筛选制造商为
SAMSUNG的产品,语句改为//product[manufacturer_name = 'SAMSUNG']
内容的提问来源于stack exchange,提问作者djnouri
相关产品推荐
相关产品推荐

