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

Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Dernière intervention
2 août 2010
- - Dernière réponse : cs_coq
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
3
Merci
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
*/

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de cs_coq
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Dernière intervention
19 août 2014
0
Merci
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
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Dernière intervention
2 août 2010
0
Merci
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
Messages postés
305
Date d'inscription
vendredi 18 juillet 2003
Dernière intervention
2 août 2010
0
Merci
Merci Coq.

Trop fort cet animal

RMI
Commenter la réponse de cs_RMI
Messages postés
6366
Date d'inscription
samedi 1 juin 2002
Dernière intervention
2 août 2014
0
Merci
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.