XPath et expression régulière [Résolu]

cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 28 juin 2010 à 09:27 - Dernière réponse : cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention
- 29 juin 2010 à 19:52
Bonjour,

Est il possible d'utiliser des expressions régulières dans des requêtes XPath ?

Dans mon cas, je souhaite trouver les nodes qui ont un attribut nommé Id finissant par _gc

Merci d'avance.

RMI
Afficher la suite 

5 réponses

Répondre au sujet
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 28 juin 2010 à 23:42
+3
Utile
Bonjour,

XmlElement.SelectSingleNode repose à l'heure actuelle sur XPath 1.0, donc la fonction ends-with n'existe pas.

Dans ce cas présent, on peut utiliser une combinaison de substring et string-length.

Ca donnerait quelque chose de ce genre (dans l'optique d'une requête paramétrée) :
Zones/Zone[substring(@id, string-length(@id) - string-length('_dr') + 1)='_dr']

Ou tout simplement, en partant du principe que les valeurs sont fixées dans la requête :
Zones/Zone[substring(@id, string-length(@id) - 2)='_dr']

En n'oubliant pas le commentaire qui va bien pour expliquer d'où sort le '2', pour la maintenance.


/*
coq
MVP Visual C#
CoqBlog
*/
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_coq
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 28 juin 2010 à 09:34
0
Utile
Bonjour,

A ma connaissance, non.
Mais pourquoi vouloir utiliser les expressions régulières alors que le XPath te suffira pour ton besoin: http://www.csharpfr.com/tutoriaux/XPATH-LANGUAGE_536.aspx

Tu pourras même utiliser la fonction ends-with si tu utilises le XPath 2.0.

Quoi qu'il en soit, tu devrait te débrouiller facilement sans cette méthode et juste avec le tutorial de Bidou.

Bon développement,

Billou_13

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Commenter la réponse de billou_13
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 28 juin 2010 à 10:01
0
Utile
Merci pour ta réponse rapide.

Voilà ce que j'écris
xmlNode = xmlDoc.DocumentElement.SelectSingleNode("Zones/Zone[ends-with(@id,'_dr')]");

mais je lève l'exception suivante, je ne vois pas mon erreur

Le gestionnaire d'espaces de noms ou XsltContext est requis. Cette requête a un préfixe, une variable ou une fonction définie par l'utilisateur.

RMI
Commenter la réponse de cs_RMI
cs_RMI 305 Messages postés vendredi 18 juillet 2003Date d'inscription 2 août 2010 Dernière intervention - 29 juin 2010 à 08:32
0
Utile
Merci Coq.

Trop fort cet animal

RMI
Commenter la réponse de cs_RMI
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 29 juin 2010 à 19:52
0
Utile
De rien :-)


/*
coq
MVP Visual C#
CoqBlog
*/
Commenter la réponse de cs_coq

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.