2009-09-01 2 views
1

J'essaie d'éliminer les avis des clients d'un site et j'ai trouvé une configuration intéressante.Comment écrire XPath pour capturer du texte qui n'est pas étiqueté

<div class="Review"> 
    <img class="stars" etc> 
    <b>ReviewerName</b> 
    - yyyy-mm-dd 
    <br/> 
    <p>Review</p> 
    <a>was this helpful links</a> 
    <hr/> 
    <br/> 
    <!-- Repeat above for additional reviews. --> 
</div> 

Pour la vie de moi je ne peux pas venir avec un XPath qui capture la date (- yyyy-mm-dd), car il n'y a pas de mise en forme HTML autour d'elle. Quelqu'un a une solution?

Jon

+0

@ Jon: Quelle est la probabilité est-il qu'un Q & A du site de programmation ne laisse pas vous publiez du code? ;-) Jetez un oeil à la prochaine fois que vous éditez une question, il y a quelques conseils de mise en forme utiles dans la barre latérale. – Tomalak

Répondre

2

En supposant une structure comme celle-ci:

<div class="Review"> 
    <img class="stars"/><b>ReviewerName</b> - yyyy-mm-dd<br/> 
</div> 

La XPath suivante sélectionne la date yyyy-mm-dd

substring-after(/div/b/following-sibling::text()[1],' - ') 
+0

Le 'substring-after()' est un peu supposé à propos de l'espace blanc qui peut ou ne peut pas être là sous la forme attendue. Je supprimerais probablement le tiret dans le langage de programmation "extérieur". D'autant plus que la plupart des langages de programmation ne vous permettent pas d'accéder aux résultats de la fonction XPath, seulement des ensembles de nœuds. – Tomalak

Questions connexes