nokogiri xpath属性-奇怪的结果



我有一堆字段,当我尝试运行时:

src.xpath('//RECORD').each do |record|
tbegin = record.xpath('//FIELD/TOKEN')

CCD_ 1数组返回来自其他记录的字段。我已经检查了第一行是否为我提供了适当的"record"子树数组,但对tbegin的下一个调用并没有将搜索限制为仅搜索"record"子树。事实上,它一致地返回record[0]的字段子树。

到目前为止,我已经通过使用解决了这个问题

tbegin = record.css('TOKEN')

但我想知道我做错了什么。

问题是xpath('//FIELD/TOKEN')中的主要双间隙,它告诉nokogiri匹配的节点不是相对于此节点,而是整个文档中的节点,无论位置如何。要相对于节点本身进行匹配,必须删除双斜线:

tbegin = record.xpath('FIELD//TOKEN')

作为补充说明,tbegin = record.css('TOKEN')工作的原因是record提供了开始搜索的顶部节点。'TOKEN'不强制在文档的根目录进行搜索,而//FIELD/TOKEN会这样做。

相关内容

  • 没有找到相关文章

最新更新