[XPath] Problème pour rechercher des caractères spéciaux
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:
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:
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.