我试图在文档的任何文本节点中找到某个文本,到目前为止我的陈述看起来像这样:
doc.xpath("//text() = 'Alliance Consulting'") do |node|
...
end
这显然不起作用,有人能提出更好的选择吗?
答案 0 :(得分:62)
这个表达式//text() = 'Alliance Consulting'
逃避布尔值。
如果是这个测试样本:
<r>
<t>Alliance Consulting</t>
<s>
<p>Test string
<f>Alliance Consulting</f>
</p>
</s>
<z>
Alliance Consulting
<y>
Other string
</y>
</z>
</r>
当然会返回true
。
您需要的表达式应该评估为节点集,因此请使用:
//text()[. = 'Alliance Consulting']
E.g。表达式:
count(//text()[normalize-space() = 'Alliance Consulting'])
针对上述文档的将返回3
。
要选择整个字符串值中包含'Alliance Consulting'
的文本节点(例如'Alliance Consulting provides great services'
),请使用:
//text()[contains(.,'Alliance Consulting')]
请注意,相邻的文本节点应在解析器到达文档后成为一个。