LINQ to XML不获取模式集为的数据

LINQ to XML不获取模式集为的数据,xml,linq,linq-to-xml,Xml,Linq,Linq To Xml,我试图用LINQ获取一些XML数据,但遇到了一个问题 我正在使用一个模式,它是在属性xmlns中设置的 <CarsForSale xmlns="http://schemas.sharplogic.net/CarSales.xsd"> <CarForSale> 然后我得到结果,我得到枚举,没有结果 从XML文件中去掉XMLN,数据就会按预期返回 有什么想法吗 Thx您需要在名称空间前面加上前缀: var ns = "http://schemas.sharplog

我试图用LINQ获取一些XML数据,但遇到了一个问题

我正在使用一个模式,它是在属性xmlns中设置的

<CarsForSale xmlns="http://schemas.sharplogic.net/CarSales.xsd">
  <CarForSale>
然后我得到结果,我得到枚举,没有结果

从XML文件中去掉XMLN,数据就会按预期返回

有什么想法吗


Thx

您需要在名称空间前面加上前缀:

var ns    = "http://schemas.sharplogic.net/CarSales.xsd";
var cars2 = from d in doc.Descendants(ns + "CarForSale")            
            select d;
否则按本地名称搜索:

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

要避免对命名空间进行硬编码,可以使用以下方法:

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