2008-10-07 11 views
4

J'essaie d'obtenir des données XML avec LINQ, mais je rencontre un problème.LINQ to XML n'obtient aucune donnée avec l'ensemble de schémas

J'utilise un schéma, qui est défini dans les xmlns attribut ...

<CarsForSale xmlns="http://schemas.sharplogic.net/CarSales.xsd"> 
    <CarForSale> 

Il y a beaucoup d'éléments de CarForSale.

Lorsque le schéma est réglé et je fais ...

XElement doc = XElement.Load(HttpContext.Current.Server.MapPath("App_Data/XML/CarsForSale.xml")); 

var cars2 = from d in doc.Descendants("CarForSale") 
      select d; 

Puis-je obtenir les résultats que je reçois Enumeration n'a donné aucun résultat

Strip xmlns sur le fichier XML et les données revient comme prévu?

Des idées?

Thx

Répondre

7

Vous devez préfixer l'espace de noms:

var ns = "http://schemas.sharplogic.net/CarSales.xsd"; 
var cars2 = from d in doc.Descendants(ns + "CarForSale")    
      select d; 

rechercher autrement par son nom local:

var cars2 = from d in doc.Descendants() 
      where d.Name.LocalName == "CarForSale"    
      select d; 
3

Pour éviter de coder en dur l'espace de noms, vous pouvez utiliser ceci:

XNamespace ns = doc.Root.Name.Namespace; 
+0

Merci pour cette addition à la nswer - fonctionne parfaitement! –