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

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

5 réponses

Meilleure réponse
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
74
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 193 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_coq
Messages postés
874
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
15
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
Statut
Membre
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
Statut
Membre
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
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
74
0
Merci
De rien :-)


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