2010-12-15 133 views
33

J'ai un div elemet:Xpath - obtenir uniquement le contenu du noeud sans autres éléments

<div> 
    This is some text 
    <h1>This is a title</h1> 
    <div>Some other content</div> 
</div> 

Quelle expression XPath dois-je utiliser pour n'obtenir le contenu div sans ses éléments enfants h1 et div

//div[not(h1)&not(div)]

Quelque chose comme ça? Je ne peux pas comprendre

+0

Est-ce que // div/text() fonctionne pas? – OrangeDog

+0

Bonne question, +1. Voir ma réponse pour trois expressions XPath qui vous fournissent probablement le non défini par votre "contenu" de l'élément 'div'. –

Répondre

46

Pour obtenir la valeur de chaîne de div utilisation:

string(/div) 

C'est la concaténation de tous les nœuds de texte qui sont des descendants du (haut) élément div.

Pour sélectionner tous les descendants du noeud texte de div utilisation:

/div//text() 

Pour obtenir uniquement les nœuds de texte qui sont les enfants directs de div utilisation:

/div/text() 
+0

Réponse parfaite. –

5

Qu'est-ce que XPath expression devrais-je utiliser pour seulement obtenir lecontenusans ses éléments enfants h1 et div

Cette expression XPath:

/div/node()[not(self::h1|self::div)] 

Il sélectionne les enfants de chaque div élément racine à l'exception des h1 ou div éléments.

2

expression comme ./text() récupérera uniquement le contenu de l'élément racine.

Cordialement, Nitin