Гость
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Алгоритм парсинга прогноза погоды / 4 сообщений из 4, страница 1 из 1
30.12.2021, 11:24
    #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
30.12.2021, 15:05
    #40124177
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Алгоритм парсинга прогноза погоды
jenya7
Как мне красиво разрулить ситуацию?

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

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

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


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