Bonjour,

J'essaye de récupérer un noeud de mon XML en utilisant la technique du Xpath. Pour cela je suis obligé d'utiliser l'objet XmlNamespaceManager mais cela ne fonctionne toujours pas.

Mon XML :

Code : 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
 
<?xml version="1.0" encoding="utf-8"?>
 
 
<Books xmlns="http://www.w3schools.com"
	   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	   xsi:schemaLocation="http://www.w3schools.com XMLFile.xsd">
	<book ISBN="10-861003-324">
		<title>C# Profesional</title>
		<releaseYear>2005</releaseYear>
		<publication>Microsoft Press</publication>
	</book>
	<book ISBN="10-942573-573">
		<title>C# CookBook</title>
		<releaseYear>2006</releaseYear>
		<publication>O'reilly</publication>
	</book>
	<book ISBN="10-346279-828">
		<title>SQL Server Black Book</title>
		<releaseYear>2005</releaseYear>
		<publication>Eyrolles</publication>
	</book>
</Books>


Et voici mon code pour retrouver un livre ayant un titre spécifié :

Code : 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
 
                xmlDoc.Load(xmlPath);
 
                //Create an XmlNamespaceManager for resolving namespaces.
                XmlNamespaceManager nsmgr = new XmlNamespaceManager(xmlDoc.NameTable);
 
                foreach (XmlAttribute nsAttr in xmlDoc.DocumentElement.Attributes)
                    if (nsAttr.Prefix == "xmlns")
                        nsmgr.AddNamespace(nsAttr.LocalName, nsAttr.Value);
 
 
                string xPath = "/Books/book[title='" + OldTitle + "']";
 
                XmlNode bookStore = xmlDoc.DocumentElement;
 
                XmlNode SearchedBook = bookStore.SelectSingleNode(xPath, nsmgr );
J'utilise aussi un XmlSchema mais je pense pas que le problème provient du schema.

Merci pour votre aide