Linq to XML: анализирует данные, но не извлекает их - PullRequest
0 голосов
/ 21 ноября 2010

Я пытаюсь получить данные 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 Ответ

1 голос
/ 21 ноября 2010

Вы хотите получить последовательность всех элементов с именем server, а не servers, поэтому вы должны использовать

from e in xml.Descendants("server")

Кроме того, я бы рекомендовал использовать Elements() вместо Descendants(), если вы хотите получить только прямых детей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...