.NET 4.x Спарсить содержимое тегов в xml - C#
Формулировка задачи:
Всем доброго времени суток! Возникла потребность вытащить информацию заключенную в туги в файле xml пример кода:
Нужно считать ники игроков заключенные в теги Попрошу не предлагать погуглить искать на форуме, т.к. не идиот и перед созданием поста облазил что только мог и ничего не работает!Заранее спасибо за помощь!
На форму:
<?xml version="1.0" encoding="UTF-8"?>
<server>
<id>423666</id>
<name>Имя сервера</name>
<host>000.000.000.000</host>
<port>2302</port>
<version>1.63.125548</version>
<required_version>163</required_version>
<platform></platform>
<state>playing</state>
<mod>Mod_List</mod>
<modhash></modhash>
<mission>Mission</mission>
<island>Map</island>
<players>24</players>
<created>2013-05-10 17:51</created>
<updated>2015-02-09 18:51</updated>
<gamename>gamename</gamename>
<battleye>true</battleye>
<signatures></signatures>
<verify_signatures>false</verify_signatures>
<passworded>false</passworded>
<dedicated>true</dedicated>
<game>
<id>27958599</id>
<mission>Mission</mission>
<island>Chernarus</island>
<start>2015-02-09 18:11</start>
<end_time></end_time>
<player_time>49572</player_time>
<updated>2015-02-09 18:51</updated>
<max_players>24</max_players>
<players>
<player>
<id>447613229</id>
<name>BlInZa [K-V]</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>1</score>
</player>
<player>
<id>447613230</id>
<name>LaBomba</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time>2015-02-09 18:17</disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>0</score>
</player>
<player>
<id>447613231</id>
<name>Tranquil [K-V]</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>1</score>
</player>
<player>
<id>447613232</id>
<name>Pogranec</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>15</score>
</player>
<player>
<id>447613233</id>
<name>[ROY]IIEnemYII</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>0</score>
</player>
<player>
<id>447613234</id>
<name>Doker</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time>2015-02-09 18:39</disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>8</score>
</player>
<player>
<id>447613235</id>
<name>Dimak</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>5</score>
</player>
<player>
<id>447613236</id>
<name>[ROY]AJlAX </name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>0</score>
</player>
<player>
<id>447613237</id>
<name>VecToR_</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>8</score>
</player>
<player>
<id>447613238</id>
<name>[F-S]Diman</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>0</score>
</player>
</players>
</game>
</server>
<name>
.. куски откуда нужно вытащить:<player>
<id>447613238</id>
<name>[F-S]Diman</name>
<team></team>
<connect_time>2015-02-09 18:13</connect_time>
<disconnect_time></disconnect_time>
<kills>0</kills>
<deaths>0</deaths>
<score>0</score>
</player>
Вот код, который раньше работал 100%, но на данный момент не могу понять почему он не работает
Класс:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.NetworkInformation;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
namespace RM_GUID
{
class FlyingCircus
{
private XmlDocument server;
private bool online = false;
private string players = "0";
private string playersOnline = "";
private string version = "";
public FlyingCircus()
{
server = new XmlDocument();
server.Load("http://arma2.swec.se/server/xml/423666.xml");
}
public void Refresh()
{
foreach (XmlNode task in server.DocumentElement.ChildNodes)
{
if (task.LocalName == "state")
{
if (task.InnerText == "playing")
{
online = true;
}
else
{
online = false;
players = "0";
playersOnline = "";
}
}
else if (task.LocalName == "players" && online)
players = task.InnerText;
else if (task.LocalName == "game" && online)
{
foreach (XmlNode game in task.ChildNodes)
{
if (game.LocalName == "players")
{
foreach (XmlNode xmlPlayers in game.ChildNodes)
{
if (xmlPlayers.LocalName == "player")
{
string tmp = "";
bool disconnected = false; ;
foreach (XmlNode player in xmlPlayers)
{
if (player.LocalName == "name")
{
tmp = player.InnerText;
}
else if (player.LocalName == "disconnect_time")
{
if (player.InnerText.Trim() != "")
{
disconnected = true;
}
}
}
if (!disconnected)
playersOnline += tmp + " ";
}
}
}
}
}
}
}
public bool IsOnline()
{
return online;
}
public string PlayersCount()
{
return players;
}
public string PlayersOnline()
{
return playersOnline;
}
public string Ping()
{
Ping ping = new Ping();
PingReply pingReply = null;
pingReply = ping.Send("IP");
if (pingReply.Status != IPStatus.TimedOut && online)
{
return pingReply.RoundtripTime.ToString();
}
else
return "99999";
}
}
}FlyingCircus fc = new FlyingCircus();
fc.Refresh();
if (fc.IsOnline())
pictureBox1.Visible = true;
else
pictureBox2.Visible = false;
if (fc.IsOnline())
pictureBox2.Visible = false;
else
pictureBox1.Visible = true;
label9.Text = fc.PlayersCount();
textBox3.Text = "Игроки онлайн: " + fc.PlayersOnline().Replace(" ", ",");Решение задачи: «.NET 4.x Спарсить содержимое тегов в xml»
textual
Листинг программы
var players = String.Join(", ", server.SelectNodes(@"server/game/players/player/name").Cast<XmlElement>().Select(n => n.InnerText));