2010-11-11 3 views
2

Étant donné le fragment html suivant, comment puis-je sélectionner tous les div avec la classe a ou c uniquement s'ils ont un enfant div avec la classe a1php xpath Sélectionnez div avec la classe "A" uniquement s'il a un enfant avec la classe "a1"

maintenant j'ai Rigth la requête XPath suivante:

//div[@id='z']/div[@class='a' or @class='c']

<div id="z"> 
    <div class="a"><!-- Should be selected --> 
     <div class="a1"></div> 
    </div> 
    <div class="a"> 
     <div></div> 
    </div> 
    <div class="b"> 
     <div></div> 
    </div> 
    <div class="a"><!-- Should be selected --> 
     <div class="a1"></div> 
    </div> 
    <div class="c"><!-- Should be selected --> 
     <div class="a1"></div> 
    </div> 
</div> 

Répondre

4

utilisation:

//div[(@class='a' or @class='c') and div[@class='a1']] 

Toujours éviter l'utilisation // lorsque la structure du XML est connu. // est souvent très inefficace, car il provoque la traversée de la sous-arborescence complète dont l'élément supérieur est le nœud de contexte.

3
/div[@id='z']/div[@class='a' or @class='c'][div[@class='a1']] 

live link

Questions connexes