我得到了一個XML文件:爲什麼這段代碼什麼都沒產生,第五次是正確的數據?
<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>
這是我的C++代碼讀取XML文件:
#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循環只是運行XML文件中的元素。 每次它發現元素的'時間',它看起來是否有一個屬性'日'。我沒有得到的是爲什麼它運行4次,第五次產生三個'時間'部分的屬性。
這是輸出:
時間日期:
時間日期:
時間日期:
時間日期:
時間日期:
2016- 02-23 2016-02-24 2016年2月25日
感謝您非常明確的答案! :) – Bluewave1976
不客氣:-) –
是的,我也看到了。我改變了它,現在它工作。 :) 再次感謝。 :) – Bluewave1976