2013-07-29 12 views
2

我要帶一個XML文件,並把它的數據到一個數組在C#讀取XML爲陣,不斷收到錯誤

我的代碼:

XmlDocument XMLDoc = new XmlDocument(); 
XMLDoc.Load("C:/Scripts/example.xml"); 
string[] bans = XMLDoc.Descendants("ban").Select(element => element.Value).ToArray(); 

不過,我不斷收到此錯誤:

'System.Xml.XmlDocument' does not contain a definition for 'Descendants' and no extension method 'Descendants' accepting a first argument of type 'System.Xml.XmlDocument' could be found (are you missing a using directive or an assembly reference?)

這裏是我的xml文件,如果其相關:

<championSelect> 
    <blue> 
     <ban order="1">Darius</ban> 
     <ban order="3">Elise</ban> 
     <ban order="5">Twisted Fate</ban> 
     <pick order="1">Gragas</pick> 
     <pick order="4">Shen</pick> 
     <pick order="5">Shyvanna</pick> 
    </blue> 
    <red> 
     <ban order="2">Jayce</ban> 
     <ban order="4">Zac</ban> 
     <ban order="6">Thresh</ban> 
     <pick order="2">Draven</pick> 
     <pick order="3">Ryze</pick> 
    </red> 
</championSelect> 

我認爲它與.decendants有關,但我不能肯定地說。我已經嘗試了很多堆棧溢出的其他解決方案,但無濟於事。如果需要,我歡迎另一種方法

回答

3

你的LINQ看起來不錯,但您使用的是XmlDocument(從System.Xml命名空間)。對於LINQ工作,你要使用XDocument代替,這是System.Xml.Linq命名空間的一部分:

var doc = XDocument.Load("C:/Scripts/example.xml"); 
string[] bans = doc.Descendants("ban") 
        .Select(element => element.Value) 
        .ToArray(); 
+0

謝謝!有效! –

0

看起來你錯過了LINQ參考,也許?嘗試添加

Using System.Xml.Linq; 
+0

不幸的是,我已經使用System.Xml.Linq的;以及System.Linq;雖然 –

+0

也許你的意思是使用XDocuments而不是XmlDocument –