我正在尝试检索如下所示的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
为空而不是包含服务器列表。谁能看到我做错了什么?
答案 0 :(得分:1)
您希望获取名称为server
而非servers
的所有元素的序列,因此您必须使用
from e in xml.Descendants("server")
此外,如果您只想检索直接子女,我建议您使用Elements()
代替Descendants()
。