2010-11-13 55 views
2

J'ai un document XML avec des nœuds commesimple expression XPath pour obtenir des attributs

<node name="xxx" id="xxx"> 

Puis-je utiliser une seule expression XPath pour obtenir l'attribut tous les nœuds dont le parent a aussi atrtribute @id = 7? No.

+0

Bonne question, +1. Voir ma réponse pour la seule solution correcte et complète, jusqu'à présent. :) –

Répondre

1

Non. Vous devrez définir quel attribut lire - un par un.

/node[@id=7]/@name 

obtiendrez le name

/node[@id=7]/@id 

obtiendrez le id

etc.

+1

En fait, c'est assez facile à spécifier dans une seule expression XPath - voir ma réponse. Il n'est pas nécessaire de spécifier un nom d'attribut spécifique. –

+0

Vous avez écrit * Vous devrez définir quel attribut lire - un par un *. Cette phrase est fausse. –

1

Cela permet de sélectionner tous idattribut nœuds qui ont la valeur 7:

//*/@id[. = '7'] 
+0

Pourquoi ne pas sélectionner tous les attributs de nom avec id = 7? – user496949

+0

@ user496949 - Ce serait: '// * [id = '7']/@ name' – Oded

2

utilisation:

//@*[not(name()='id') and ../@id = 7] 

cela sélectionne tous les attributs non-id dont le parent a un attribut id avec la valeur du nombre 7. cela acceptera id='7' et id=' 7 '

//@*[not(name()='id') and ../@id = '7'] 

cela sélectionne tous les attributs non-id dont le parent a un attribut id avec la valeur de la chaîne '7'. Cela acceptera id='7' mais pas id=' 7 '