2

我想获取一个 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 有关,但我不能肯定地说。我在这里尝试了很多关于堆栈溢出的其他解决方案,但均无济于事。如有必要,我欢迎另一种方法

4

3 回答 3

3

您的 LINQ 看起来不错,但是您使用的是XmlDocument(来自System.Xml命名空间)。为了使 LINQ 正常工作,您需要使用 an XDocument,它是System.Xml.Linq命名空间的一部分:

var doc = XDocument.Load("C:/Scripts/example.xml");
string[] bans = doc.Descendants("ban")
                   .Select(element => element.Value)
                   .ToArray();
于 2013-07-29T22:14:38.760 回答
0

看起来您可能缺少 LINQ 参考?尝试添加

Using System.Xml.Linq;  
于 2013-07-29T22:12:55.590 回答
0

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

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

于 2013-07-29T22:15:42.747 回答