Форум программистов, компьютерный форум CyberForum.ru

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

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

Парсинг - C++

07.08.2011, 22:17. Просмотров 1287. Ответов 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;

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

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

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

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

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

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xAtom
914 / 739 / 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;
}
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
08.08.2011, 10:26     Парсинг #3
aidalexeyaid, А что мешает юзать либы специально сделанный для этого? libxml к примеру? arabica?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2011, 11:15     Парсинг
Еще ссылки по теме:

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

Парсинг Get-запросов - C++
В общем мне необходимо разобрать содержимое гет запроса, поступающего на Arduino-машинку. Решил написать пару методов в либу для разбора...

Парсинг строки - C++
Добрый день. Помогите с решением следующей задачи. На вход идет строка из 0 и 1, например, 110100011, нужно распарсить её на составляющие....

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

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

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


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

Или воспользуйтесь поиском по форуму:
aidalexeyaid
0 / 0 / 0
Регистрация: 28.07.2011
Сообщений: 42
08.08.2011, 11:15  [ТС]     Парсинг #4
ForEveR, спасибо за совет )
Yandex
Объявления
08.08.2011, 11:15     Парсинг
Ответ Создать тему
Опции темы

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