LINQ to XMLは、スキーマが設定されたデータを取得しません
-
05-07-2019 - |
質問
LINQでXMLデータを取得しようとしていますが、問題が発生しています。
xmlns属性に設定されているスキーマを使用しています...
<CarsForSale xmlns="http://schemas.sharplogic.net/CarSales.xsd">
<CarForSale>
多くのCarForSale要素があります。
スキーマが設定され、これを行うと...
XElement doc = XElement.Load(HttpContext.Current.Server.MapPath("App_Data/XML/CarsForSale.xml"));
var cars2 = from d in doc.Descendants("CarForSale")
select d;
その後、結果を取得しますが、列挙では結果が得られませんでした
xmlnsをXMLファイルから削除すると、データは期待どおりに返されますか?
アイデアはありますか
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;
所属していません StackOverflow