2012-05-01 4 views
1

Comment construire une expression xpath dans laquelle je souhaite obtenir l'élément <p> en suivant un élément <p> avec un élément enfant <fort> avec le texte "A propos de cet événement:".Comment écrire une expression xpath pour un élément suivant un autre avec un certain texte?

En d'autres termes, quelle expression chemin me donnera le "<p>" élément avec le "Bonjour" texte suivant le <P> avec le < Fort texte > ci-dessous ...

<p> 
    <strong>About this event:</strong> 
    … 
</p> 
<p>Hello</p> 

? -

Répondre

2
//p[strong[.='About this event:']]/following-sibling::p 

ou

//p[strong[.='About this event:']]/following-sibling::p[.='Hello'] 
+1

vous avez manqué ']' dans le second sélecteur avant '/ followin ...' –

+0

Je l'ai réparé. Pourquoi ne l'as-tu pas réparé par toi-même? –

+1

Je pense que vous avez besoin d'un minimum de 2000 rep pour éditer d'autres messages d'utilisateurs (que @alehdouhi n'a pas encore). –

1

Essayez ceci:

//p[normalize-space(strong)='About this event:']/following-sibling::p 

Vous pouvez aussi restreindre celui-ci à la première p en ajoutant [1]:

//p[normalize-space(strong)='About this event:']/following-sibling::p[1] 
0

Je crois que cela devrait être faisable. Voici la sortie de l'outil xpath de Perl:

so zacharyyoung$ xpath so.xml '//p[strong = "About this event:"]/following-sibling::p[1]' 
Found 1 nodes: 
-- NODE -- 
<p>Hello</p> 

Le XPath est //p[strong = "About this event:"]/following-sibling::p[1]

Questions connexes