Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
aidalexeyaid
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 42
#1

Парсинг - C++

07.08.2011, 22:17. Просмотров 1335. Ответов 3
Метки нет (Все метки)

Привет всем вообщем нужно удачно спарсить данные (gold, money, fuel, lvl, model) вид ответа хоть и xml но данные к сожалению находятся не в <> </> сам ответ от сервера

XML
1
2
3
<init fuel_gifts="42901258,43261771,108608536,71020171,131709065,34245643,20195695,76560979" can_send_fuel="1">
    <user default_car="20472775" tank="0" races_lost="349" gold="10" money="60246" races_won="438" fuel_ts="1312486378" fuel_base="81" money_spent="219210" garage="4" was_robbed="True" exp="842" fuel="100" lvl="5" money_win="208250" bonus_claimed="False" id="52858776" races_level="397" races_passive="343">
        <car rating="0" wheelssize="0.85" turbocharger="2" color="16764160" neon="0" tires="1" roof="" scoopcolor="0" id="20472775" toningalpha="0.5" spoilercolor="-1" seatingrear="0" nitrooxide="1" toning="-1" exhaust="1" radiator="2" roofcolor="0" coilovers="1" user_id="52858776" wheels="sberhonda" spoiler="" intake="2" clutch="2" ecu="1" seatingfront="0" scoop="" wheelscolor="-1" ignition="1" model="evolution10">
вообще я новичек ))) но кое что настряпал своими неумелыми руками

(s это тот самый ответ от сервера в XML)

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
      int p = s.Pos("gold");
      s = s.Delete(1, p+5);
      p = s.Pos('="');
      int len = s.Pos('" ') - p;
      String num = s.SubString(p, len+2);
 
 
      if(num == "0'")
      {
          num = 0;
      }
 
          if(num == "1'")
      {
          num = 1;
      }
 
      if(num == "2'")
      {
          num = 2;
      }
 
      if(num == "3'")
      {
          num = 3;
      }
 
      if(num == "4'")
      {
          num = 4;
      }
 
      if(num == "5'")
      {
          num = 5;
      }
 
      if(num == "6'")
      {
          num = 6;
      }
 
      if(num == "7'")
      {
          num = 7;
      }
 
      if(num == "8'")
      {
          num = 8;
      }
 
      if(num == "9'")
      {
          num = 9;
      }
 
      Label10->Caption = "Золото : "+num;
 
      int p1 = s.Pos("money");
      s = s.Delete(1, p1+6);
      p1 = s.Pos('="');
      int len1 = s.Pos('" ') - p1;
      String num1 = s.SubString(p1, len1+5);
      Label11->Caption = "Деньги : "+num1;
 
      int p2 = s.Pos("fuel=");
      s = s.Delete(1, p2+5);
      p2 = s.Pos('="');
      int len2 = s.Pos('" ') - p2;
      String num2 = s.SubString(p2, len2+2);
      if(num2 == 10)
      {
          num2 = 100;
      }
      Label9->Caption = "Топливо : "+num2;
 
      int p3 = s.Pos("lvl");
      s = s.Delete(1, p3+4);
      p3 = s.Pos('="');
      int len3 = s.Pos('" ') - p3;
      String num3 = s.SubString(p3, len3+2);
      if(num3 == "1'")
      {
          num3 = 1;
      }
 
      if(num3 == "2'")
      {
          num3 = 2;
      }
 
      if(num3 == "3'")
      {
          num3 = 3;
      }
 
      if(num3 == "4'")
      {
          num3 = 4;
      }
 
      if(num3 == "5'")
      {
          num3 = 5;
      }
 
      if(num3 == "6'")
      {
          num3 = 6;
      }
 
      if(num3 == "7'")
      {
          num3 = 7;
      }
 
      if(num3 == "8'")
      {
          num3 = 8;
      }
 
      if(num3 == "9'")
      {
          num3 = 9;
      }
 
 
      Label12->Caption = "Уровень : "+num3;
 
 
      int p4 = s.Pos("model");
      s = s.Delete(1, p4+6);
      p4 = s.Pos('="');
      int len4 = s.Pos('" ') - p4;
      String num4 = s.SubString(p4, len4+11);
 
      Label8->Caption = "Авто : "+num4;

согласитесь это не ажур так как в лейблы попадают случайные кавычки и так далее и вообще данные могут быть разными помогите пожалуйста ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2011, 22:17
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Парсинг (C++):

Парсинг - C++
Всем доброго времени суток. Только начал изучать c++ и нужна помощь. Есть код, нужно сделать парсинг. Не понимаю , что это и как его...

Парсинг - C++
Привет всем ) Есть небольшая проблема например имеется переменная String t = '&lt;img src=&quot;http://site.ru/u3124123/d_hwre2.jpg&quot;/&gt;...

Парсинг шрифтов - C++
Всем привет. Вот заинтересовала тема о шрифтах, подскажите пожалуйста литературу по шрифтам, хотелось бы научиться считывать файл шрифта...

Парсинг строки - C++
Доброе время суток! столкнулся с такой проблемой что странно отрекаются данные из строки bool LoadTypeFiles() { ...

Парсинг файла - C++
Вот открываю через FILE*, файл ввида &quot;test&quot; { &quot;test1&quot; &quot;test1_1&quot; &quot;test2&quot; &quot;test2_1&quot; &quot;test3&quot; &quot;test3_1&quot; ...

Рекурсивный парсинг - C++
Есть формат на базе XML. 1. Файл начинается с &lt;?xml version=&quot;...&quot; encoding=&quot;ANSI...&quot;?&gt; 2. Поддерживается единственная кодировка только...

3
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
08.08.2011, 00:31 #2
Цитата Сообщение от aidalexeyaid Посмотреть сообщение
нужно удачно спарсить данные (gold, money, fuel, lvl, model)
Вот набросал парсинг вводишь значение которое нужно найти с учётом регистра букв.
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
#include <ctype.h>
#include <string.h>
#include <stdio.h>
 
 
// вот сама функция если ключ найден возвращает -1, если нет - 0
int  get_value(const char* str, const char* key, char* gval) {
  int  i;
  const char* ps = str;
  while(1) {
      ps = strstr(ps, key);
      if(! ps)
         return 0;
      i   = ~(str - ps);
      ps += strlen(key);
      if(*ps == '=' && isspace(*((str) + i))) {
          while( *ps++ != '"' && *ps);
          while( *ps   != '"' && *ps)
                *gval++ = *ps++;
          *gval = '\0';
          break;
      }
  }
  return 1;
}
 
 
 
int main(void) {
 
    char xml[] = "<data gold=\"100\" money=\"3450\" fuel=\"787\" lvl=\"75\" model=\"T-100\"></data>";
 
    char value[32];  // в этот буфер будет записано выходное значение
 
    //gold, money, fuel, lvl, model
    if(get_value(xml, "gold", value))
        printf("gold = %s\n", value);
 
    if(get_value(xml, "money", value))
        printf("money = %s\n", value);
 
    if(get_value(xml, "fuel", value))
        printf("fuel = %s\n", value);
 
    if(get_value(xml, "lvl", value))
        printf("lvl = %s\n", value);
 
    if(get_value(xml, "model", value))
        printf("model = %s\n", value);
 
 
    getchar();
    return 0;
}
1
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,543
Завершенные тесты: 3
08.08.2011, 10:26 #3
aidalexeyaid, А что мешает юзать либы специально сделанный для этого? libxml к примеру? arabica?
0
aidalexeyaid
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 42
08.08.2011, 11:15  [ТС] #4
ForEveR, спасибо за совет )
0
08.08.2011, 11:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2011, 11:15
Привет! Вот еще темы с ответами:

Парсинг файла - C++
Загружаю файл в string, строка в файле только одна, так что масив ненужен. В чем задача стоит? Содержимое файла такое: {&quot;параметр_1&quot;:...

Парсинг .xls - C++
Не уверен, туда ли я пишу, но т.к. собираюсь реализовывать на C++ - думаю раздел в какой-то мере верный. Хотелось бы узнать, пытался-ли...

Парсинг xml - C++
При написание парсера возникла проблема, как интерпретировать следующий xml &lt;?xml version=&quot;1.0&quot; ?&gt; &lt;note item=&quot;description&quot;&gt; ...

Парсинг html - C++
Здравствуйте, уважаемые форумчане! Я мало знаю на тему парсинга и вот мне нужно вытащить информацию с сайта http://www.igumo.ru/. Слева...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru