PDA

Просмотр полной версии : Как вывести из кода число, если оно постоянно меняется?


vova1234561
23.04.2012, 15:42
Всем привет, вот заинтересовался таким вопросом.
Как вывести из кода число, если оно постоянно меняется?
<friends_rating>
<friend>
<uid>7505627</uid>
<damage>43227</damage>
</friend>
<friend>
<uid>10437098</uid>
<damage>8092</damage>
</friend>
<friend>
<uid>13755553</uid>
<damage>7660</damage>
</friend>
<friend>
<uid>8278921</uid>
<damage>5371</damage>
</friend>
<friend>
<uid>932019</uid>
<damage>5005</damage>
</friend>
<friend>
<uid>2805284</uid>
<damage>3387</damage>
</friend>
<friend>
<uid>1782825</uid>
<damage>1223</damage>
</friend>
<friend>
<uid>9816639</uid>
<damage>1100</damage>
</friend>
</friends_rating>

Думая вы поняли о чем я /problem
Мне из каждых объектов "friend", надо вывести uid и damage в label (каждый) /dgs

Nickitee
25.04.2012, 22:00
string[] Text; //Это твой ответ от сервера
for (int i = 0;i < Text.Length; i++)
{
if (Text[i].IndexOf("<friend>")!=-1)
{
richTextBox1.AppendText(String.Format("UID: {0};damage: {1}", Text[i+1].Split(new char[]{'<','>'})[2],Text[i+2].Split(new char[]{'<','>'})[2]);
}
}

Gamer1912
26.04.2012, 00:56
Это же последние события в тюряге? Сам делал когда то

//функция парсинга
public string parse(string all, string l, string r, string razd)
{
string res = "";
Regex g5 = new Regex(l + "(.*?)" + r);
if (g5.IsMatch(all))
{
MatchCollection matches = g5.Matches(all);
foreach (Match y in matches) { res += y.Groups[1].ToString() + razd; }
}
return res;
}

string send = "ответ от сервера";
string[] uid = parse(send, "<uid>", "</uid>", ",").Split(',');
string[] damage = parse(send, "<damage>", "</damage>", ",").Split(',');
for (int i = 0; i < uid.Length; i++)
label1.Text += uid[i] + " - " + damage[i] + "\n";

Только думаю лучше вместо лейбла рич использовать.

vova1234561
01.05.2012, 16:35
Gamer1912, Выводит весь список
а надо только friends_rating!

vova1234561
09.05.2012, 16:02
апс

Gamer1912
10.05.2012, 06:08
Gamer1912, Выводит весь список
а надо только friends_rating!

Всм вместе с последними событиями? Если про это, то само собой сначала indexOf от <friends_rating> до </friends_rating>, а после уже моим кодом!

vova1234561
10.05.2012, 11:31
Gamer1912,

string[] Text = text.Split('\n');
for (int i = 0; i < Text.Length; i++)
{
if (Text[i].IndexOf("<friends_rating>") != -1)
{
string[] uid = parse(text, "<uid>", "</uid>", ",").Split(',');
string[] damage = parse(text, "<damage>", "</damage>", ",").Split(',');
for (int l = 0; l < Text.Length; l++)
richTextBox1.Text += uid[l] + "-" + damage[l] + "\n";
}
}


В чем проблема?

Yukikaze
10.05.2012, 14:18
Трындец, думал не буду отвечать в этой теме, но когда увидел, что вы ПАРСИТЕ(!!!) XML документ, я... я просто... в общем нет слов.


XmlDocument doc = new XmlDocument();
doc.LoadXml(
@"<friends_rating>
<friend>
<uid>7505627</uid>
<damage>43227</damage>
</friend>
<friend>
<uid>10437098</uid>
<damage>8092</damage>
</friend>
<friend>
<uid>13755553</uid>
<damage>7660</damage>
</friend>
<friend>
<uid>8278921</uid>
<damage>5371</damage>
</friend>
<friend>
<uid>932019</uid>
<damage>5005</damage>
</friend>
<friend>
<uid>2805284</uid>
<damage>3387</damage>
</friend>
<friend>
<uid>1782825</uid>
<damage>1223</damage>
</friend>
<friend>
<uid>9816639</uid>
<damage>1100</damage>
</friend>
</friends_rating> ");

foreach (XmlNode node in doc.SelectNodes("/friends_rating/friend"))
{
listBox1.Items.Add(string.Format("UID: {0}, Damage: {1}", node.SelectSingleNode("uid").InnerText, node.SelectSingleNode("damage").InnerText));
}

vova1234561
10.05.2012, 17:11
Трындец, думал не буду отвечать в этой теме, но когда увидел, что вы ПАРСИТЕ(!!!) XML документ, я... я просто... в общем нет слов.
у меня друг недавно говорил, что это можно через xml сделать или через рег.выражения))

Yukikaze
10.05.2012, 19:05
XML можно сериализировать, можно через класс XmlDocument прочитать, но что бы парсить, да еще и регулярками, нет извольте, лучше о таком даже и не думать, во имя пресвятых нулей и едениц