LINQ to XML不获取模式集为的数据
我试图用LINQ获取一些XML数据,但遇到了一个问题 我正在使用一个模式,它是在属性xmlns中设置的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
<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;