web-dev-qa-db-fra.com

xpath pour obtenir Node contenant du texte

J'ai essayé de rechercher des nœuds contenant du texte "Yahoo" sous "/ doc/story/content", il renvoie le nœud "content", mais j'ai besoin d'un nœud de texte exact qui contient "Yahoo" ou son parent

<doc>
    <story>
        <content id="201009281450332423">
            <ul>MSW NYNES NYPG1 DILMA</ul>
            <p> <k> Yahoo, made </k> it Nice </p>
            <p>
               <author>-v-</author>
            </p>
        </content>
    </story>
</doc>

Xpath: "/doc/story/content[contains(., 'Yahoo')]"

39
Vjy

Puisque vous avez besoin de tous les textNodes contenant uniquement le texte Yahoo , utilisez le XPath suivant.

//text()[contains(., 'Yahoo')]

Cela devrait vous renvoyer tous les textNodes qui contiennent Yahoo (sensible à la casse).

48
Ravish

Votre XML est mal formé. </content></doc></story> devrait être </content></story></doc>.

En dehors de cela, le XPath que vous voudriez est

/doc/story/content//*[contains(., 'Yahoo')]

(sélectionnez un descendant de <content> qui contient le texte "Yahoo" - cela sélectionnera le <p>)

41
Jon