LINQ-to-XMLの詳細を取得しようとしているので、物事を試すXML文書の例さらに、私はそのファイルのために独自のXMLスキーマを作ってみましたが、うまくいきました。 XMLドキュメントは非常に簡単です、そしてほとんどは次のようになります。私は、ルート要素からxmlns
-attributeを削除する場合私のXML文書のルート要素にxmlns属性を追加するとlinq-queryが機能しない
<cars xmlns="/carsSchema.xsd">
<car age="5">
<carId>1</carId>
<brand>BMW</brand>
<model>320i</model>
<color paintType="metallic">Red</color>
</car>
<car age="2">
<carId>2</carId>
<brand>VW</brand>
<model>Golf</model>
<color paintType="matt">White</color>
</car>
[...]
</cars>
さて、この文書を照会するだけで正常に動作します。私はそれを再び追加すると、クエリはnullを返し、何も返しません。私は自分で見つけようとしましたが、私はまだ私の問題を解決する解決策を見つけていません。
は、ここでC#のビットです:
XDocument xmlDoc = XDocument.Load(currentDir + "\\Cars.xml");
// XNamespace ns = "{" + currentDir + "\\carSchema.xsd}";
// Tried to query xmlDoc.Descendants(ns+"car") after reading another post,
// but that made no difference
var carInfo1 = from car in xmlDoc.Descendants("car")
select (string)car.Element("brand") + ": " + (string)car.Element("model");
誰もが間違って何見ていますか?そして、LINQが本当に気にするべき理由その名前空間について多くはでしょうか?私のファイルを照会するだけで、気にしないのですか?
ありがとうございます! :-)
これで解決しました。どうもありがとう!しかし、LINQがネームスペースを無視するようにする方法がいくつかありますが、最初はXML-docから名前空間を削除します。 –
私はそれほど信じられません。それは少し痛みですが、私はそれが本当に理にかなっていると思います。 –