<body>
<div>some text</div>
I NEED THIS TEXT ONLY
<div>some text</div>
more text here
<div>some text</div>
one more text here
<div>some text</div>
</body>
Comment?saisir du texte entre deux éléments dans nokogiri?
<body>
<div>some text</div>
I NEED THIS TEXT ONLY
<div>some text</div>
more text here
<div>some text</div>
one more text here
<div>some text</div>
</body>
Comment?saisir du texte entre deux éléments dans nokogiri?
Je n'ai pas de nokogiri, mais voici une alternative utilisant simplement la manipulation de chaînes de base.
html=<<EOF
<body>
<div>some text</div>
I NEED THIS TEXT ONLY
<div>some text</div>
more text here
<div>some text</div>
one more text here
<div>some text</div>
</body>
EOF
p html.split(/<\/*body>/)[1].split(/<\/div>/)[1].split(/<div>/)[0]
cela renvoie le premier nœud de texte dans body
entre deux éléments: div
/body/text()[
./preceding::element()[1][local-name()="div"] and
./following::element()[1][local-name()="div"]
][1]
devrait retourner
I NEED THIS TEXT ONLY
Ce XPath 1.0:
/body/text()[preceding-sibling::*[1][self::div]]
[following-sibling::*[1][self::div]][1]
Aussi:
/body/text()[normalize-space()][1]
Utilisation:
/*/div[1]/following-sibling::text()[1]
Sélectionne le premier frère nœud texte du premier enfant div
de l'élément supérieur du document.
** Vraiment? ** La manipulation de chaînes au lieu de l'analyse? –
O.M.G., si c'était une question Perl, la foudre aurait frappé. Pour tout sauf la manipulation de chaîne de tâche la plus triviale et/ou son cousin REGEX échouera mal. Pour la recherche amusante de perl, regex et parsing html. –
L'exigence d'OP est triviale. Pour moi, il n'y a aucune raison d'utiliser nokogiri ou un autre outil d'analyse syntaxique. – ghostdog74