2011-07-20 8 views
1

hey les gars ne peuvent pas contourner ce problème. J'ai un html structuré comme suit:Xpath obtenant un nœud sans contenu de nœud enfant

<div class="review-text"> 
<div id="reviewerprofile"> 
<div id="revimg"></div> 
<div id="reviewr">marc</div> 
<div id="revdate">2011-07-06</div> 
</div> 
this is an awesome review 

</div> 

ce que je suis en train de faire est que le texte «c'est un examen génial » mais je everytyme interroger le poste i obtenir également l'autre contenu dans les Childs. en utilisant quelque chose comme ça maintenant ".//div[@class='review-text ']" comment obtenir seulement ce texte? vous réservoir beaucoup

Répondre

1

Vous êtes presque là! Ajoutez simplement/text() à la fin de votre XPath pour obtenir le noeud de texte.

0

Une expression XPath telle que // div renvoie un ensemble de nœuds, dans ce cas des éléments div. Ce sont en fait des pointeurs vers les nœuds d'origine dans l'arbre d'origine; les nœuds sont toujours connectés à leurs parents, enfants, ancêtres et frères et soeurs. Si vous voyez les enfants de l'élément div et que vous ne les voulez pas, ce n'est pas la faute du processeur XPath, c'est la faute du logiciel qui traite les résultats renvoyés par l'expression XPath.

Vous pouvez obtenir le texte qui est un enfant immédiat de l'élément div en utilisant/text() comme suggéré. Cependant, cela suppose que vous sachiez exactement ce que vous attendez de la page HTML - si "génial" était en italique, cela vous donnerait quelque chose de différent.

Questions connexes