2009-10-18 6 views
3

considèrent une page htmlXpath: Comment sélectionnez-vous le deuxième noeud de texte (nœud de texte spécifique)

<html> 
apple 

orange 

drugs 

</html> 

comment pouvez-vous choisir d'orange en utilisant XPath?

/html/text()[2] 

ne fonctionne pas.

+3

Vous n'avez pas plusieurs nœuds de texte ici. Vous avez un seul nœud de texte qui contient des sauts de ligne. –

+0

Et si les textes sont séparés par
? – pingu

+1

XPath ne fonctionne pas sur HTML - il fonctionne sur XML. Sauf si votre HTML est vraiment XHTML, vous n'obtiendrez pas de bons résultats –

Répondre

3

Vous ne pouvez pas le faire directement en sélectionnant. Vous devez appeler une fonction de chaîne XPath pour couper le texte() pour obtenir la chaîne que vous voulez

substring-after(/html/text()," ") // something like this, 

ici est un list of string functions

1

Si les chaînes sont séparées par <br> il fonctionne

doc = Nokogiri::HTML("""<html> 
    apple 
    <br> 
    orange 
    <br> 
    drugs 
    </html>""") 
    p doc.xpath('//text()[2]') #=> orange