私はXMLファイルを得た:なぜこのコードは4回何も生成せず、5回目に正しいデータを生成しますか?
<weatherdata>
\t <location>
\t \t <name>Vlaardingen</name>
\t \t <type/>
\t \t <country>NL</country>
\t \t <timezone/>
\t \t <location altitude="0"
\t \t \t \t latitude="51.912498"
\t \t \t \t longitude="4.34167"
\t \t \t \t geobase="geonames"
\t \t \t \t geobaseid="2745467"/>
\t </location>
\t <credit/>
\t <meta>
\t \t <lastupdate/>
\t \t <calctime>0.0152</calctime>
\t \t <nextupdate/>
\t </meta>
\t <sun rise="2016-02-23T06:40:58"
\t \t \t set="2016-02-23T17:11:47"/>
\t <forecast>
\t \t <time day="2016-02-23">
\t \t \t <symbol number="500"
\t \t \t \t \t name="lichte regen"
\t \t \t \t \t var="10d"/>
\t \t \t <precipitation/>
\t \t \t <windDirection deg="316"
\t \t \t \t \t code="NW"
\t \t \t \t \t name="Northwest"/>
\t \t \t <windSpeed mps="9.01"
\t \t \t \t \t name="Fresh Breeze"/>
\t \t \t <temperature day="6.06"
\t \t \t \t \t min="5.57"
\t \t \t \t \t max="6.06"
\t \t \t \t \t night="5.66"
\t \t \t \t \t eve="5.57"
\t \t \t \t \t morn="6.06"/>
\t \t \t <pressure unit="hPa"
\t \t \t \t \t value="1027.72"/>
\t \t \t <humidity value="96"
\t \t \t \t \t unit="%"/>
\t \t \t <clouds value="clear sky"
\t \t \t \t \t all="8"
\t \t \t \t \t unit="%"/>
\t \t </time>
\t \t <time day="2016-02-24">
\t \t \t <symbol number="501"
\t \t \t \t \t name="matige regen"
\t \t \t \t \t var="10d"/>
\t \t \t <precipitation value="3.15"
\t \t \t \t \t type="rain"/>
\t \t \t <windDirection deg="283"
\t \t \t \t \t code="WNW"
\t \t \t \t \t name="West-northwest"/>
\t \t \t <windSpeed mps="6.21"
\t \t \t \t \t name="Moderate breeze"/>
\t \t \t <temperature day="4.98"
\t \t \t \t \t min="4.17"
\t \t \t \t \t max="5.11"
\t \t \t \t \t night="4.17"
\t \t \t \t \t eve="4.85"
\t \t \t \t \t morn="4.32"/>
\t \t \t <pressure unit="hPa"
\t \t \t \t \t value="1030.97"/>
\t \t \t <humidity value="100"
\t \t \t \t \t unit="%"/>
\t \t \t <clouds value="scattered clouds"
\t \t \t \t \t all="48"
\t \t \t \t \t unit="%"/>
\t \t </time>
\t \t <time day="2016-02-25">
\t \t \t <symbol number="500"
\t \t \t \t \t name="lichte regen"
\t \t \t \t \t var="10d"/>
\t \t \t <precipitation value="1.23"
\t \t \t \t \t type="rain"/>
\t \t \t <windDirection deg="295"
\t \t \t \t \t code="WNW"
\t \t \t \t \t name="West-northwest"/>
\t \t \t <windSpeed mps="5.71"
\t \t \t \t \t name="Moderate breeze"/>
\t \t \t <temperature day="5.43"
\t \t \t \t \t min="4.92"
\t \t \t \t \t max="5.48"
\t \t \t \t \t night="5.34"
\t \t \t \t \t eve="5.48"
\t \t \t \t \t morn="4.92"/>
\t \t \t <pressure unit="hPa"
\t \t \t \t \t value="1026.18"/>
\t \t \t <humidity value="100"
\t \t \t \t \t unit="%"/>
\t \t \t <clouds value="broken clouds"
\t \t \t \t \t all="68"
\t \t \t \t \t unit="%"/>
\t \t </time>
\t </forecast>
</weatherdata>
これは、XMLファイルを読み込み、私のC++コードです:私はコーディングで初心者だ
#include <iostream>
#include <string>
#include "tinyxml2.h"
using namespace std;
struct weatherData
{
// date of day
string time_day;
// symbol data for weathericon and display of weather type
string symbol_number;
string symbol_name;
string symbol_var;
// windspeed
string windSpeed_mps;
// min. and max. temperature
string temp_min;
string temp_max;
};
int main()
{
weatherData forecast[3];
int counter = 0;
tinyxml2::XMLDocument doc;
if(doc.LoadFile("daily.xml") == tinyxml2::XML_SUCCESS)
{
tinyxml2::XMLElement* root = doc.FirstChildElement();
for(tinyxml2::XMLElement* elem = root->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
{
std::string elemName = elem->Value();
for (tinyxml2::XMLElement* e = elem->FirstChildElement("time"); e != NULL; e = e->NextSiblingElement("time"))
{
if (e)
{
const char *time = e->Attribute("day");
forecast[counter].time_day = time;
counter++;
}
}
cout << "Time dates: " << endl;
for (int i = 0; i < 3;i++)
{
cout << forecast[i].time_day << endl;
}
counter = 0;
}
}
}
。私はブログのサンプルコードを使用しており、それを自分のニーズに合わせています。私はfor-loopsがXMLファイル内の要素を横断して実行されることを知っています。 そして、 'time'要素を見つけるたびに、 'day'属性を持っているかどうかを調べます。私が得られないのは、それが4回実行され、5回目に3つの時間部分の属性を生成する理由です。
これが出力されます:
時間はさかのぼり:
時間はさかのぼり:
時間はさかのぼり:
時間はさかのぼり:
時間はさかのぼり:
を2016- 02-23 2016-02-24 2016年2月25日
感謝を! :) – Bluewave1976
あなたは歓迎です:-) –
はい、私もそれを見ました。私はそれを変更し、今それは動作します。 :) 再度、感謝します。 :) – Bluewave1976