XPath busca texto en cualquier nodo de texto
Estoy tratando de encontrar un texto determinado en cualquier nodo de texto de un documento, hasta ahora mi declaración se ve así:
doc.xpath("//text() = 'Alliance Consulting'") do |node|
...
end
Obviamente esto no funciona, ¿alguien puede sugerir una alternativa mejor?
Esta expresión //text() = 'Alliance Consulting'
equivale a un valor booleano.
En el caso de esta muestra de prueba:
<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
Por supuesto que volverá .
La expresión que necesita debe evaluarse como conjunto de nodos, así que use:
//text()[. = 'Alliance Consulting']
Por ejemplo expresión:
count(//text()[normalize-space() = 'Alliance Consulting'])
contra el documento anterior se devolverá 3
.
Para seleccionar nodos de texto que contienen 'Alliance Consulting'
el valor de cadena completo (por ejemplo 'Alliance Consulting provides great services'
), utilice:
//text()[contains(.,'Alliance Consulting')]
Tenga en cuenta que los nodos de texto adyacentes deben convertirse en uno después de que el analizador llegue al documento.