2010-02-10 8 views
1

Compte tenu du code XML suivant,Comment puis-je retourner un noeud spécifique lorsqu'il existe différents critères de sélection/profondeurs avec xpath?

<root> 
    <property> 
     <programs> 
      <program>1</program> 
      <program>5</program> 
     </programs> 
     <tool> 
     </tool> 
    </property> 
    <property> 
     <tool> 
      <programs> 
       <program>1</program> 
       <program>2</program> 
      </programs> 
     </tool> 
    </property> 
</root> 

comment pourrais-je écrire une expression XPath pour retourner une collection contenant les noeuds de « propriété » lorsque le programme = 1? Je pense que je veux écrire quelque chose comme "donnez-moi tous les nœuds de propriété quand moi-même ou un descendant contient des programmes [program = 1]", mais je ne peux pas l'obtenir simplement les nœuds "propriété" ...

Répondre

1
property[.//programs/program=1] 

Sélectionne les éléments qui contiennent property descendants programs éléments qui contiennent un élément enfant qui program sa valeur est 1.

+0

Aha! Je savais qu'il devait y avoir un moyen de le faire. "C'était facile!" Thx –

+0

Vous voulez dire 'propriété [.// programmes/programme = 1]'. '//' commence à la racine, ce qui conduirait à * chaque * nœud de propriété renvoyé tant qu'il y a un 'programme = 1' n'importe où dans le document. './/' commence au noeud contextuel. – Tomalak

+0

Doh! Merci, Tomalak. J'ai corrigé la réponse –

Questions connexes