Linq to XML:解析数据但不提取数据

时间:2010-11-21 13:30:25

标签: c# xml linq linq-to-xml

我正在尝试检索如下所示的XML数据:

<servers>    
<server id="256698330093839" name="Blackstar Games Server" address="blackstar.xs4all.nl"
    port="6774" num_users="13" version="1.2" start="1286488744">        
</server>
... more records snipped ...
</servers>

使用此代码:

            WebClient client = new WebClient();
            var url = "http://www.openrpg.com/openrpg_servers.php";
            Program.log(url);
            var s = client.DownloadString(url);
            Program.log(s);
            var xml = XElement.Parse(s);
            var servers =
                from e in xml.Descendants("servers")
                select new Server
                {
                    port = (int)e.Attribute("port"),
                    users = (int)e.Attribute("num_users"),
                    name = (string)e.Attribute("name"),
                    address = (string)e.Attribute("address"),
                };

尽可能成功地将数据解析为xml中的元素树,但不会抛出任何异常,但是当它完成时,servers为空而不是包含服务器列表。谁能看到我做错了什么?

1 个答案:

答案 0 :(得分:1)

您希望获取名称为server而非servers的所有元素的序列,因此您必须使用

from e in xml.Descendants("server")

此外,如果您只想检索直接子女,我建议您使用Elements()代替Descendants()