XPath et expression régulière

Résolu
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 - 28 juin 2010 à 09:27
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 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

5 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
28 juin 2010 à 23:42
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
*/
3
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
28 juin 2010 à 09:34
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
---------------------
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
28 juin 2010 à 10:01
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
0
cs_RMI Messages postés 305 Date d'inscription vendredi 18 juillet 2003 Statut Membre Dernière intervention 2 août 2010 2
29 juin 2010 à 08:32
Merci Coq.

Trop fort cet animal

RMI
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
29 juin 2010 à 19:52
De rien :-)


/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous