2010-01-14 4 views

Répondre

2
..element.([email protected] == "val") 
+0

Qu'est-ce que cela fera dans les cas où un élément clé existe sans attribut @attr? Je sais que XPath ne renvoie aucun noeud pour cela, mais des cratères e4x avec un type d'erreur d'attribut manquant pour les expressions simples. Cela arrive-t-il aussi ici? –

+0

Dans mon expérience, si l'attribut est manquant rien ne sera retourné, aucune erreur ne sera levée. – invertedSpear

+0

Cela ne causera pas de problèmes dans AS3. Il y a un problème en JavaScript. Tant que l'attribut est en cours de vérification sur un noeud enfant (même s'il existe ou non) dans le filtre, aucune erreur ne sera levée. '.. (@ bar ==" baz ")' lancerait une erreur car tous les éléments n'ont pas d'attribut 'bar', donc vous voudriez essayer' .. (function :: attribute ("bar") == " baz ")' en JavaScript. –

2
xmlVarName.element.list.key.(@attr=="val"); 

alternatif

xmlVarName..key.(@attr=="val"); 
+0

Non, cela renverra les nœuds de clé. Le xpath que j'ai montré retourne les nœuds d'élément qui ont un attribut clé particulier. –

+0

'// element' n'est pas' .element' (qui est '/ element'). Ce serait '..element'. –

+0

J'ai mal compris ce que vous cherchiez, désolé, pas familier avec xpath. Elijah a une réponse, une autre est d'appeler la méthode parent() comme xmlVarName.element.list.key. (@ Attr == "val"). Parent(). Parent() (bien qu'Elie soit plus propre). – invertedSpear

1

Il est important de noter que

..element.([email protected] == "val") 

peut échouer si les clés nœuds n'ont pas tous @attr.

La méthode la plus sûre (bien que dans mon expérience, pas 100% réussie) pour extraire votre liste de nœuds serait la plus sûre.

..element.(list.key.attribute("attr") == "val") 

Cependant, j'ai eu des problèmes avec E4X et expressions conditionnelles, (mise en œuvre AS3, Mozilla semble mieux.), Mais il semble être en baisse à la source XML.

Questions connexes