webentwicklung-frage-antwort-db.com.de

xpath, um Node mit Text zu erhalten

Ich habe versucht, unter "/ doc/story/content" nach Knoten zu suchen, die den Text "Yahoo" enthalten. Es wird der Knoten "content" zurückgegeben. Ich benötige jedoch einen genauen Textknoten, der "Yahoo" oder einen übergeordneten Knoten enthält

<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

Da Sie nur alle textNodes benötigen, die den Text Yahoo enthalten, verwenden Sie den folgenden XPath.

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

Dies sollte Ihnen nur alle textNodes zurückgeben, die Yahoo (Groß-/Kleinschreibung beachten) enthalten.

48
Ravish

Ihre XML ist fehlerhaft. </content></doc></story> sollte sein </content></story></doc>.

Abgesehen davon ist der XPath, den Sie möchten

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

(wählen Sie einen Nachkommen von <content> mit dem Text "Yahoo" - hiermit wird der <p>)

41
Jon