Xml.Linq: Descendientes () no devuelve nada

Estoy tratando de leer un archivo ncx (es decir, un archivo xml) usando XElement:

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

Como resultado, foundNode es nulo porque ncx.Descendants (“navPoint”) devuelve una enumeración vacía. Pero los datos están ahí:

           Fine     I. BLIND   

¿Podría por favor explicar qué está mal aquí? Gracias.

Debe tener en cuenta el espacio de nombres en XML:

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

También puede eliminar espacios de nombres o referirse a elementos sin usar el espacio de nombres usando la propiedad XElement.Name.LocalName: ejemplos aquí