我試圖進一步瞭解LINQ到XML,所以我讓自己變得整潔示例XML文檔來嘗試一下。另外,我嘗試(併成功)爲該文件創建了自己的XML模式,只是爲了測試一下。該XML文檔是非常簡單的,和幾乎是這樣的:當我的XML文檔中的xmlns屬性添加到根元素時,我的linq查詢不起作用
<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>
現在,查詢這個文件,如果我從根元素刪除xmlns
-attribute工作得很好。當我將它添加回來時,查詢返回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中移除? – 2009-04-27 14:03:24