Xml.Linq: Descendants () ne renvoie rien

J’essaie de lire un fichier ncx (fichier xml) en utilisant XElement:

XElement foundNode = ncx.Descendants("navPoint").Where(r => r.Atsortingbute("class").Value == "chapter").FirstOrDefault(); 

Par conséquent, foundNode est null car ncx.Descendants (“navPoint”) renvoie une énumération vide. Mais les données sont là:

           Fine     I. BLIND   

Pourriez-vous s’il vous plaît expliquer ce qui ne va pas ici? Merci.

Vous devez prendre en compte l’espace de nommage XML:

 XDocument ncx = XDocument.Load("file.xml"); XNamespace df = ncx.Root.Name.Namespace; XElement foundNode = ncx.Descendants(df + "navPoint").Where(r => r.Atsortingbute("class").Value == "chapter").FirstOrDefault(); 

Vous pouvez également supprimer des espaces de noms ou faire référence à des éléments sans utiliser l’espace de noms à l’aide de la propriété XElement.Name.LocalName: Exemples ici