powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм парсинга прогноза погоды
4 сообщений из 4, страница 1 из 1
Алгоритм парсинга прогноза погоды
    #40124121
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я получаю прогноз на 5 дней. В каждом дне 5 временных отрезков (3 часа)
Код: 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.
<time from="2021-12-28T09:00:00" to="2021-12-28T12:00:00">
    //day 0 time slot 0
</time>
<time from="2021-12-28T12:00:00" to="2021-12-28T15:00:00">
    //day 0 time slot 1
</time>
<time from="2021-12-28T15:00:00" to="2021-12-28T18:00:00">
    //day 0 time slot 2 
</time>
<time from="2021-12-28T18:00:00" to="2021-12-28T21:00:00">
    //day 0 time slot 3  
</time>
<time from="2021-12-28T21:00:00" to="2021-12-29T00:00:00">
    //day 0 time slot 4  
</time>
<time from="2021-12-29T00:00:00" to="2021-12-29T03:00:00">
    //day 1 time slot 0
</time>
<time from="2021-12-29T03:00:00" to="2021-12-29T06:00:00">
    //day 1 time slot 1
</time>
<time from="2021-12-29T06:00:00" to="2021-12-29T09:00:00">
    //day 1 time slot 2 
</time>
<time from="2021-12-29T09:00:00" to="2021-12-29T12:00:00">
    //day 1 time slot 3 
</time>
<time from="2021-12-29T12:00:00" to="2021-12-29T15:00:00">
    //day 1 time slot 4 
</time>


Чтоб распарсить я создал структуру
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
typedef struct
{
   QString time_from;
   QString time_to;
   uint16_t humidity;
   uint16_t mode;
   uint32_t pressure;
   float temperature;
   float precipitation; 
}WEATHER_TIME;


typedef struct
{
    QString day;
    WEATHER_TIME time_slots[5];
}WEATHER_DAY;

static WEATHER_DAY wether_data[5];



И тут я запутался как продвигать индекс дня (time_idx) и и индекс временного отрезка (time_idx )
Код: 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.
QString day;
QString time;

int day_idx = 0;
int time_idx = 0;

while(!xml_reader->atEnd() && !xml_reader->hasError())
{
        token = xml_reader->readNext();

        if(token == QXmlStreamReader::StartElement)
        {
            if(xml_reader->name() == "time")
            {

                attributes = xml_reader->attributes();

                if(attributes.hasAttribute("from"))
                {
                   
                    SplitDateTime(attributes.value("from").toString(), &day, &time);

                  //time_idx ???

                    if (day != wether_data[day_idx].day)
                        wether_data[day_idx].day = day;

                    wether_data[day_idx].time_slots[time_idx].time_from = time;
                
                }

                if(attributes.hasAttribute("to"))
                {
                    SplitDateTime(attributes.value("to").toString(),  &day, &time);

                    wether_data[day_idx].time_slots[time_idx].time_to = time;

                    // time_idx++;
                   // if (time_idx > 4)
                        //time_idx = 0;
                } 
        }                
    }
}


Как мне красиво разрулить ситуацию?
...
Рейтинг: 0 / 0
Алгоритм парсинга прогноза погоды
    #40124177
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jenya7
Как мне красиво разрулить ситуацию?

Откажись от массива
static WEATHER_DAY wether_data[5];
и сделай список
static QList<WEATHER_DAY> wether_data;
...
Рейтинг: 0 / 0
Алгоритм парсинга прогноза погоды
    #40124204
jenya7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl
jenya7
Как мне красиво разрулить ситуацию?

Откажись от массива
static WEATHER_DAY wether_data[5];
и сделай список
static QList<WEATHER_DAY> wether_data;

Ну в принципе опция. Спасибо за идею.
...
Рейтинг: 0 / 0
Алгоритм парсинга прогноза погоды
    #40124293
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Документ не очень большой. Можно было как-то через XPath наверное. Красивее.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм парсинга прогноза погоды
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]