将XML读入Array,不断收到错误

时间:2013-07-29 22:07:35

标签: c# xml arrays parsing

我想获取一个XML文件并将其数据放入C#

中的数组中

我的代码:

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

但是,我一直收到这个错误:

  

'System.Xml.XmlDocument'不包含的定义   '后代'并没有延伸方法'后代'接受第一个   可以找到类型'System.Xml.XmlDocument'的参数(是吗?   缺少using指令或程序集引用?)

这是我的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>

我认为这与.Descendants有关,但我不能肯定地说。我已经尝试了很多其他解决方案在堆栈溢出无济于事。如果有必要,我欢迎另一种方法

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:0)

看起来你可能错过了LINQ参考?尝试添加

Using System.Xml.Linq;  

答案 2 :(得分:0)

您收到该错误是因为您应该使用XDocument类,它是System.XML.Linq namesapace的一部分

http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx