Bonjour,
J'aimerait faire une requête XPath pour rechercher les noeuds d'un certain type dont un attribut a une valeur spécifiée par l'utilisateur. Le problème est que cette valeur peut contenir n'importe quel caractère, y compris des " et des '. Tant que je reste en XML, pas de problème, ces caractères sont convertis au besoin en " et ' mais en XPath, ça n'a pas l'air de marcher. Voici par exemple mon fichier :
Et un bout de code reproduisant le problème (écrit en C# avec le moteur XPath de Microsoft, mais j'ai le même problème avec libxml++) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="utf-8"?> <Root> <Port id="toto">1</Port> <Port id="l'oiseau& quot;">2</Port> <Port id='l& apos;oiseau"'>3</Port> </Root>
Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Xml; using System.Xml.XPath; namespace TesXPath { class Program { static void ParseFile(string file) { XmlDocument doc = new XmlDocument(); doc.Load(file); XmlNodeList list = doc.SelectNodes("Root/Port[@id='l'oiseau\";']"); foreach (XmlElement current in list) { Console.WriteLine(current.OuterXml); } } static void Main(string[] args) { ParseFile("Test.xml"); } } }
J'ai essayé avec diverses variantes sans succès. J'arrive à rechercher une chaîne ne contenant ques de ' (en la délimitant par "), ou une chaîne ne contenant que des " (en la délimitant par des '), mais pas une chaîne contenant les deux.
Merci de votre aide.
Partager