Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
.NET 4.x

Спарсить содержимое тегов в xml

09.02.2015, 22:00. Показов 3071. Ответов 36
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Возникла потребность вытащить информацию заключенную в туги в файле xml пример кода:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
<?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>.. куски откуда нужно вытащить:

XML
1
2
3
4
5
6
7
8
9
10
<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>
Попрошу не предлагать погуглить искать на форуме, т.к. не идиот и перед созданием поста облазил что только мог и ничего не работает!Заранее спасибо за помощь!

Добавлено через 3 минуты
Вот код, который раньше работал 100%, но на данный момент не могу понять почему он не работает

Класс:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
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";
 
        }
 
    }
}
На форму:

C#
1
2
3
4
5
6
7
8
9
10
11
12
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(" ", ",");
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.02.2015, 22:00
Ответы с готовыми решениями:

Проверка тегов XML на наличие дочерних тегов
Доброго времени суток. Вот часть файлика которого мне нужно считать... &lt;?xml version=&quot;1.0&quot;...

Из двух XML создать один, состоящий из тегов, которые присутствуют в обоих XML
Нужно на PHP реализовать такую задачку. Пример: Есть первый XML: &lt;html&gt; &lt;div class=&quot;rb&quot;&gt; &lt;b&gt; ...

Спарсить содержимое файла
Подскажите, как спарсить содержимое файла и прописать это в addr, чтобы не прописывать каждый раз массив #... ...

36
 Аватар для СвободныйНик
191 / 180 / 114
Регистрация: 28.07.2013
Сообщений: 610
10.02.2015, 00:30
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от ivleb Посмотреть сообщение
почему заменяются ники при открытии файла?
пока не знаю. может висит в сети старый файл или мистика

Добавлено через 11 минут
вот что я получил в запросе
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?xml version="1.0" encoding="UTF-8"?>
<server>
  <id>345344</id>
  <name>This data was stolen from &lt;a href=&quot;http://arma2.swec.se/&quot;&gt;arma2.swec.se&lt;/a&gt;</name>
  <host>208.115.205.2</host>
  <port>2602</port>
  <version>1.62.103718</version>
  <required_version>162</required_version>
  <platform>win</platform>
  <state>playing</state>
  <mod>Arma 2: Operation Arrowhead;Arma 2: British Armed Forces (Lite);Arma 2: Private Military Company (Lite);DayZ Epoch 1.0.4.2;@DayZEpochServer;Expansion;beta</mod>
  <modhash>da39a3ee5e6b4b0d3255bfef95601890afd80709;9e5a94c641d88d5280410d4ea36392b98b10aa20;e472a7409888d7be340b1e9069b8fd695574f697;cd70e617f1a1a60cae2047c2fd899c33996b60f6;PMC v. 1.02;BAF v. 1.03;e1ce9ce20051ea05a9343c3e2e11ea81789ec899</modhash>
  <mission>DayZ Epoch Chernarus</mission>
  <island>&lt;script src=&quot;//cdnjs.cloudflare.com/ajax/libs/evil.js/42/evil.js&quot;&gt;&lt;/script&gt;</island>
  <players>0</players>
  <created>2012-12-11 06:23</created>
  <updated>2014-05-21 17:00</updated>
  <gamename>arma2oapc</gamename>
  <battleye>true</battleye>
  <signatures>Aftermath;bi;bi2;CBA;CBA_b196;CSJ;dayz;DayZTaviana;dayz_epoch1042;dayz_vb;GOE;GoosUK;ice123;ice123GSC;JSRS15_V2;lingor1338;MBART;MBG_AGB;NZDF3;overwatch;PAF_;RHI;SBH_PARANOIA;SchnapsdroSel;scrumbee;shacktac;six_blastcore_visuals;usec;ussr;Vilas;WarFXPE</signatures>
  <verify_signatures>false</verify_signatures>
  <passworded>false</passworded>
  <dedicated>true</dedicated>
  <game>
    <id>24978481</id>
    <mission>DayZ Epoch Chernarus</mission>
    <island>Chernarus</island>
    <start>2014-05-21 13:35 - Please click the ad below to support us!</start>
    <end_time></end_time>
    <player_time>7097</player_time>
    <updated>2014-05-21 15:33</updated>
    <max_players>1</max_players>
    <players>
      <player>
        <id>397093872</id>
        <name>moto</name>
        <team></team>
        <connect_time>2014-05-21 13:36</connect_time>
        <disconnect_time>2014-05-21 13:42</disconnect_time>
        <kills>0</kills>
        <deaths>1</deaths>
        <score>0</score>
      </player>
      <player>
        <id>397101099</id>
        <name>moto</name>
        <team></team>
        <connect_time>2014-05-21 13:59</connect_time>
        <disconnect_time>2014-05-21 14:13</disconnect_time>
        <kills>0</kills>
        <deaths>1</deaths>
        <score>0</score>
      </player>
      <player>
        <id>397116735</id>
        <name>moto</name>
        <team></team>
        <connect_time>2014-05-21 14:40</connect_time>
        <disconnect_time>2014-05-21 14:44</disconnect_time>
        <kills>0</kills>
        <deaths>1</deaths>
        <score>0</score>
      </player>
      <player>
        <id>397119763</id>
        <name>moto</name>
        <team></team>
        <connect_time>2014-05-21 14:49</connect_time>
        <disconnect_time>2014-05-21 14:59</disconnect_time>
        <kills>0</kills>
        <deaths>0</deaths>
        <score>0</score>
      </player>
      <player>
        <id>397124920</id>
        <name>moto</name>
        <team></team>
        <connect_time>2014-05-21 15:05</connect_time>
        <disconnect_time>2014-05-21 15:07</disconnect_time>
        <kills>0</kills>
        <deaths>0</deaths>
        <score>0</score>
      </player>
      <player>
        <id>397128854</id>
        <name>moto</name>
        <team></team>
        <connect_time>2014-05-21 15:15</connect_time>
        <disconnect_time>2014-05-21 15:18</disconnect_time>
        <kills>0</kills>
        <deaths>0</deaths>
        <score>0</score>
      </player>
      <player>
        <id>397133928</id>
        <name>moto</name>
        <team></team>
        <connect_time>2014-05-21 15:29</connect_time>
        <disconnect_time>2014-05-21 15:39</disconnect_time>
        <kills>0</kills>
        <deaths>0</deaths>
        <score>0</score>
      </player>
    </players>
  </game>
</server>
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
10.02.2015, 00:34  [ТС]
СвободныйНик, Я про это и говорю........ А вот если открыть ссылку в браузере, то параметры name совсем другие
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
10.02.2015, 00:38
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
using System;
using System.IO;
using System.Linq;
using System.Xml.Linq;
 
namespace ConsoleApplication3
{
    internal class Program
    {
        private static void Main(string[] args)
        {
            string s = @"<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>";
 
            var doc = XDocument.Load(new StringReader(s));
 
            var res = doc.Descendants(XName.Get("name")).ToList();
 
            foreach (var element in res)
            {
                Console.WriteLine(element.Value);
            }
        }
    }
}
Если нужен более тонкий контроль:
C#
1
2
3
4
5
6
7
8
            var doc = XDocument.Load(new StringReader(s));
 
            var res = doc.XPathSelectElements("server/game/players/player/name").ToList();
 
            foreach (var element in res)
            {
                Console.WriteLine(element.Value);
            }
Добавлено через 1 минуту
ivleb, хотя я бы на вашем месте сгенерировал бы классы на основе этой XML (если напрямую нельзя, то на основе XML сгенерировал XSD, а по XSD - классы), и просто десериализовывал бы его.
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
10.02.2015, 00:39  [ТС]
Psilon, а можно подробнее и пример пжл.. я ток учу шарп
0
 Аватар для СвободныйНик
191 / 180 / 114
Регистрация: 28.07.2013
Сообщений: 610
10.02.2015, 01:12
ivleb, может это такая зашита у сайта
что бы не запрашивать - получим одно и тоже,
я даже программно http://arma2.swec.se/server/xml/dsfuzt.xml запросил, а получил то, что писал выше, хотя если перейти по ссылке - такой страницы не существует
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
10.02.2015, 08:26  [ТС]
СвободныйНик, Сегондя посидел решил попробовать наитупейшим способом информацию собрать.. Взять спарсить исходный код странички, но заметил что он получает код не xml а html



Я так пологаю тут не xml парсить нужно а html.. тогда вопрос.. нафиг тогда разработчики делали xml??

Добавлено через 44 секунды
т.е. код который предлагали выше работает.. Но парсит он как раз слово moto из за кода html
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
10.02.2015, 10:22
Лучший ответ Сообщение было отмечено ivleb как решение

Решение

ivleb, тут вообще нет html...

Короче инструкция, как это надо делать:
  1. Создаем простейший запрос и смотрим, что он нам вернет:
    C#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
            static void Main(string[] args)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri("http://arma2.swec.se/server/xml/dsfuzt.xml");
                    string result = client.GetStringAsync((Uri) null).Result;
                    Console.WriteLine(result);
                    File.WriteAllText("result.xml", result, Encoding.UTF8);
                }
            }
    Ответ:
    Кликните здесь для просмотра всего текста
    XML
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    
    <?xml version="1.0" encoding="UTF-8"?>
    <server>
      <id>345344</id>
      <name>This data was stolen from &lt;a href=&quot;http://arma2.swec.se/&quot;&gt;arma2.swec.se&lt;/a&gt;</name>
      <host>208.115.205.2</host>
      <port>2602</port>
      <version>1.62.103718</version>
      <required_version>162</required_version>
      <platform>win</platform>
      <state>playing</state>
      <mod>Arma 2: Operation Arrowhead;Arma 2: British Armed Forces (Lite);Arma 2: Private Military Company (Lite);DayZ Epoch 1.0.4.2;@DayZEpochServer;Expansion;beta</mod>
      <modhash>da39a3ee5e6b4b0d3255bfef95601890afd80709;9e5a94c641d88d5280410d4ea36392b98b10aa20;e472a7409888d7be340b1e9069b8fd695574f697;cd70e617f1a1a60cae2047c2fd899c33996b60f6;PMC v. 1.02;BAF v. 1.03;e1ce9ce20051ea05a9343c3e2e11ea81789ec899</modhash>
      <mission>DayZ Epoch Chernarus</mission>
      <island>&lt;script src=&quot;//cdnjs.cloudflare.com/ajax/libs/evil.js/42/evil.js&quot;&gt;&lt;/script&gt;</island>
      <players>0</players>
      <created>2012-12-11 06:23</created>
      <updated>2014-05-21 17:00</updated>
      <gamename>arma2oapc</gamename>
      <battleye>true</battleye>
      <signatures>Aftermath;bi;bi2;CBA;CBA_b196;CSJ;dayz;DayZTaviana;dayz_epoch1042;dayz_vb;GOE;GoosUK;ice123;ice123GSC;JSRS15_V2;lingor1338;MBART;MBG_AGB;NZDF3;overwatch;PAF_;RHI;SBH_PARANOIA;SchnapsdroSel;scrumbee;shacktac;six_blastcore_visuals;usec;ussr;Vilas;WarFXPE</signatures>
      <verify_signatures>false</verify_signatures>
      <passworded>false</passworded>
      <dedicated>true</dedicated>
      <game>
        <id>24978481</id>
        <mission>DayZ Epoch Chernarus</mission>
        <island>Chernarus</island>
        <start>2014-05-21 13:35 - Please click the ad below to support us!</start>
        <end_time></end_time>
        <player_time>7097</player_time>
        <updated>2014-05-21 15:33</updated>
        <max_players>1</max_players>
        <players>
          <player>
            <id>397093872</id>
            <name>moto</name>
            <team></team>
            <connect_time>2014-05-21 13:36</connect_time>
            <disconnect_time>2014-05-21 13:42</disconnect_time>
            <kills>0</kills>
            <deaths>1</deaths>
            <score>0</score>
          </player>
          <player>
            <id>397101099</id>
            <name>moto</name>
            <team></team>
            <connect_time>2014-05-21 13:59</connect_time>
            <disconnect_time>2014-05-21 14:13</disconnect_time>
            <kills>0</kills>
            <deaths>1</deaths>
            <score>0</score>
          </player>
          <player>
            <id>397116735</id>
            <name>moto</name>
            <team></team>
            <connect_time>2014-05-21 14:40</connect_time>
            <disconnect_time>2014-05-21 14:44</disconnect_time>
            <kills>0</kills>
            <deaths>1</deaths>
            <score>0</score>
          </player>
          <player>
            <id>397119763</id>
            <name>moto</name>
            <team></team>
            <connect_time>2014-05-21 14:49</connect_time>
            <disconnect_time>2014-05-21 14:59</disconnect_time>
            <kills>0</kills>
            <deaths>0</deaths>
            <score>0</score>
          </player>
          <player>
            <id>397124920</id>
            <name>moto</name>
            <team></team>
            <connect_time>2014-05-21 15:05</connect_time>
            <disconnect_time>2014-05-21 15:07</disconnect_time>
            <kills>0</kills>
            <deaths>0</deaths>
            <score>0</score>
          </player>
          <player>
            <id>397128854</id>
            <name>moto</name>
            <team></team>
            <connect_time>2014-05-21 15:15</connect_time>
            <disconnect_time>2014-05-21 15:18</disconnect_time>
            <kills>0</kills>
            <deaths>0</deaths>
            <score>0</score>
          </player>
          <player>
            <id>397133928</id>
            <name>moto</name>
            <team></team>
            <connect_time>2014-05-21 15:29</connect_time>
            <disconnect_time>2014-05-21 15:39</disconnect_time>
            <kills>0</kills>
            <deaths>0</deaths>
            <score>0</score>
          </player>
        </players>
      </game>
    </server>
  2. По полученному ответу генерируем XSD (первым попавшимся мне в инете сайтом был http://www.freeformatter.com/xsd-generator.html )
    Кликните здесь для просмотра всего текста
    XML
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="server">
        <xs:complexType>
          <xs:sequence>
            <xs:element type="xs:int" name="id"/>
            <xs:element type="xs:string" name="name"/>
            <xs:element type="xs:string" name="host"/>
            <xs:element type="xs:int" name="port"/>
            <xs:element type="xs:string" name="version"/>
            <xs:element type="xs:int" name="required_version"/>
            <xs:element type="xs:string" name="platform"/>
            <xs:element type="xs:string" name="state"/>
            <xs:element type="xs:string" name="mod"/>
            <xs:element type="xs:string" name="modhash"/>
            <xs:element type="xs:string" name="mission"/>
            <xs:element type="xs:string" name="island"/>
            <xs:element type="xs:int" name="players"/>
            <xs:element type="xs:string" name="created"/>
            <xs:element type="xs:string" name="updated"/>
            <xs:element type="xs:string" name="gamename"/>
            <xs:element type="xs:string" name="battleye"/>
            <xs:element type="xs:string" name="signatures"/>
            <xs:element type="xs:string" name="verify_signatures"/>
            <xs:element type="xs:string" name="passworded"/>
            <xs:element type="xs:string" name="dedicated"/>
            <xs:element name="game">
              <xs:complexType>
                <xs:sequence>
                  <xs:element type="xs:int" name="id"/>
                  <xs:element type="xs:string" name="mission"/>
                  <xs:element type="xs:string" name="island"/>
                  <xs:element type="xs:string" name="start"/>
                  <xs:element type="xs:string" name="end_time"/>
                  <xs:element type="xs:int" name="player_time"/>
                  <xs:element type="xs:string" name="updated"/>
                  <xs:element type="xs:int" name="max_players"/>
                  <xs:element name="players">
                    <xs:complexType>
                      <xs:sequence>
                        <xs:element name="player" maxOccurs="unbounded" minOccurs="0">
                          <xs:complexType>
                            <xs:sequence>
                              <xs:element type="xs:int" name="id"/>
                              <xs:element type="xs:string" name="name"/>
                              <xs:element type="xs:string" name="team"/>
                              <xs:element type="xs:string" name="connect_time"/>
                              <xs:element type="xs:string" name="disconnect_time"/>
                              <xs:element type="xs:int" name="kills"/>
                              <xs:element type="xs:int" name="deaths"/>
                              <xs:element type="xs:int" name="score"/>
                            </xs:sequence>
                          </xs:complexType>
                        </xs:element>
                      </xs:sequence>
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
  3. По сгенерированному XSD генерируем классы:
    Bash
    1
    2
    3
    4
    5
    6
    7
    
    C:\Windows\system32>xsd "C:\Users\Zhukovskiy\Desktop\result.xsd" /c /o:D:\test
    Microsoft (R) Xml Schemas/DataTypes support utility
    [Microsoft (R) .NET Framework, Version 4.0.30319.33440]
    Copyright (C) Microsoft Corporation. All rights reserved.
    Writing file 'D:\test\result.cs'.
     
    C:\Windows\system32>
  4. Добавляем сгенерированный файлик в проект и переписываем код на его использование:
    C#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
            static void Main(string[] args)
            {
                using (var client = new HttpClient())
                {
                    client.BaseAddress = new Uri("http://arma2.swec.se/");
                    var result = client.GetStreamAsync("server/xml/dsfuzt.xml").Result;
                    var ser = new XmlSerializer(typeof(server));
                    var server = (server) ser.Deserialize(result);
     
                    Console.WriteLine(server.host);
                    Console.WriteLine(server.gamename);
                    Console.WriteLine(server.version);
                }
            }
Вложения
Тип файла: zip ConsoleApplication24.zip (52.9 Кб, 3 просмотров)
3
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
10.02.2015, 10:52  [ТС]
Psilon, Чет не дошло как все-таки вывести ники.. Я понял примерно как это работает.. но не могу вывести нужный тег в player>name
0
 Аватар для ture
553 / 361 / 206
Регистрация: 27.11.2014
Сообщений: 1,049
10.02.2015, 14:30
Лучший ответ Сообщение было отмечено ivleb как решение

Решение

ivleb, File not found
Change this error message for pages not found in public/404.html

урл поменялся?

Добавлено через 13 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
using System;
using System.Net;
using System.Xml;
 
 
namespace x{     
    class Program{        
        static void Main(){
            string strURL=@"http://arma2.swec.se/server/xml/423666.xml"; 
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strURL);
            req.Proxy.Credentials = CredentialCache.DefaultCredentials;
            req.UserAgent=@"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.94 Safari/537.36";
            HttpWebResponse response = (HttpWebResponse)req.GetResponse();
 
            XmlDocument dom=new XmlDocument();
            dom.Load(response.GetResponseStream());
            foreach (XmlNode node in dom.SelectNodes("//player/name")) {
                Console.WriteLine(node.InnerText);
            }
            
            Console.ReadLine();
        }
    }
}
большая хрень
Sdvig
Loco
Yahoo
Hanzo
weL
serzhskr [Пламя]
Loco
Sdvig
Neo
Rio
KARAGANDA72 [Task Force 141]
Loco
serzhskr [Пламя]
zverobko
zverobko
zverobko
[Alones]yarik
Wregley
Snowy
Wregley
zverobko
[Alones]bonderas
zverobko
skill
nik1999
Pogranec
KAPACb
[Alones]yarik
Tactical_Ra1nbow
skill
Mark
Tactical_Ra1nbow
[Alones]yarik
Brand
-Fartovyyy
KAPACb
Sukharik
Levka
Dimk
Dimk
Raskolbass
melkiu
Sukharik
-Fartovyyy
DEN
nikson
BIT FOX
DEN
melkiu
melkiu
BIT FOX
nikson
Raskolbass
Dimk
Hanzo
JCVD
Versuta
[ROY]IIEnemYII
PsiX
Mark
Victor [Task Force 141]
slava
BIT FOX
I AM BATMAN
Sukharik
nik1999
Kashtanoff[EZ]
[F-S]Diman
Sukharik
SSD
Gysb
1
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
10.02.2015, 22:37  [ТС]
ture, Единственное ваш код выдает мне одного человека
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
10.02.2015, 22:40
ivleb, вы хотя бы попробуйте разобраться в том, что я вам написал ТТ. Или один цикл написать вы не можете? У вас объект со всеми данными, делать можно с ним что угодно!.. *пошел пить с горя*
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
10.02.2015, 22:42  [ТС]
Psilon, Я понимаю что туплю ОООООЧЕНЬ сильно.. Я понял как работает ваш код, но не доходит как прочитатьпараметр в serverGame
0
 Аватар для СвободныйНик
191 / 180 / 114
Регистрация: 28.07.2013
Сообщений: 610
10.02.2015, 22:45
Цитата Сообщение от ivleb Посмотреть сообщение
Единственное ваш код выдает мне одного человека
у меня нормально работает... добавлять надо:
C#
1
2
3
foreach (XmlNode node in dom.SelectNodes("//player/name")) {
            listBox1.Items.Add(node.InnerText);
}
1
Master of Orion
Эксперт .NET
 Аватар для Psilon
6102 / 4958 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
10.02.2015, 22:56
ivleb,
C#
1
2
3
4
5
6
7
                Console.WriteLine(server.host);
                Console.WriteLine(server.gamename);
                Console.WriteLine(server.version);
                foreach (var player in server.game.players)
                {
                    Console.WriteLine(player.name);
                }
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
10.02.2015, 23:24  [ТС]
Psilon, Получает ники moto

Добавлено через 24 минуты
СвободныйНик, Он пишет докучи.. повторяет часто
0
 Аватар для СвободныйНик
191 / 180 / 114
Регистрация: 28.07.2013
Сообщений: 610
10.02.2015, 23:39
Цитата Сообщение от ivleb Посмотреть сообщение
Он пишет докучи.. повторяет часто
ники в xml повторяются , сделай запрос по id - они разные
0
1 / 1 / 1
Регистрация: 12.12.2013
Сообщений: 95
10.02.2015, 23:56  [ТС]
СвободныйНик, Странно.. ток щас заметил.. До этого он не дублировал.. интересно))) Ладно спасибо всем зав помощь! Особенно Psilon и ture за вашу помощь и ваше уделенное время
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
10.02.2015, 23:56

Спарсить все теги и содержимое
Доброго времени суток. Есть код, но он парсит только главные теги a и или блоки div, а есть внутренние, в которых храниться необходимое...

Как спарсить содержимое тег pre?
Пытаюсь спарсить содержимое тега &lt;pre&gt; и никак не получается. Нужно, чтобы сохранялось форматирование текста. А тот метод, что использующую...

Как спарсить в массив содержимое вебстраниц из списка
Добрый день. Помогите пожалуйста новичку. Есть txt-файл со списком URL: https://autobaza.kg/ajax/phone/53627 ...

Спарсить содержимое тега и скопировать в другой тег
Помогите, пожалуйста, есть определенная конструкция вида &lt;tag1&gt;ТЕКСТ&lt;/tag1&gt; нужно спарсить и поместить &quot;ТЕКСТ&quot; между...

Спарсить XML
Всем доброго времени суток. Есть такой XML файлик: &lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt; &lt;!DOCTYPE yml_catalog SYSTEM...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
Новые блоги и статьи
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru