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 :
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>
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 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&apos;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.