1
嗨,這是我的xml文件。我想選擇level4模塊的modulecode,moduletiltle和credits,但是當我使用Descendants節點時,它會向我展示所有級別的所有後代節點。但我要爲選擇只有級別4模塊信息使用linq選擇部分xml文檔時出錯
<myCourse>
<courseName>BEng Mobile and Web Computing</courseName>
<courseStructure>
<level4>
<module>
<moduleCode>ECSC401</moduleCode>
<moduleTitle>Programming Methodology</moduleTitle>
<credits>15</credits>
<semester>1</semester>
</module>
<module>
<moduleCode>ECSC404</moduleCode>
<moduleTitle>Computer Systems Fundamentals</moduleTitle>
<credits>15</credits>
<semester>1</semester>
</module>
</level4>
<level5>
<module>
<moduleCode>ECSE501</moduleCode>
<moduleTitle>Object Oriented Development</moduleTitle>
<credits>30</credits>
<semester>0</semester>
</module>
<module>
<moduleCode>ECWM506</moduleCode>
<moduleTitle>Mobile Computing Principles</moduleTitle>
<credits>15</credits>
<semester>1</semester>
</module>
</level5>
</courseStructure>
</myCourse>
我的代碼LINQ查詢選擇級別4後裔:
var query = from r in xmlDoc.Element("level4").Descendants("module")
select new
{
moduleCode=r.Element("moduleCode").Value,
moduleTitle = r.Element("moduleTitle").Value,
credits = r.Element("credits").Value
};
非常感謝您的回覆,它工作得很好。我將xdoc聲明爲Xdocument,但它應該是XElement類型。當我將其更改爲XElement時,我得到了期望的結果。感謝馬吉德。 – Aroor 2011-05-23 20:52:32
有一個問題可以告訴我根據Linq中的選擇查詢,XElement和XDocument之間的區別是什麼,因爲我最近使用了linq。 – Aroor 2011-05-23 20:54:24
@XAr一個'XDocument'代表一個帶有關聯元數據的完整XML文檔,而'XElement'代表一個XML片段。您通常可以使用其中一種,但您需要了解查詢的差異:[查詢XDocument與查詢XElement](http://msdn.microsoft.com/en-us/library/ bb675196.aspx)。對於'XDocument',你的查詢可以使用'xdoc.Root.Element(...)' - 注意'Root'屬性。 – 2011-05-23 21:02:29