From: fredb Date: Sun, 1 Jun 2008 11:56:32 +0000 (+0000) Subject: Fix Traffic Manager XML parser X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=af879b83104ac40e5b93c5f23c24f5ab2f3792e7;p=flightgear.git Fix Traffic Manager XML parser --- diff --git a/src/Traffic/TrafficMgr.cxx b/src/Traffic/TrafficMgr.cxx index 70ce07800..80402487d 100644 --- a/src/Traffic/TrafficMgr.cxx +++ b/src/Traffic/TrafficMgr.cxx @@ -231,12 +231,16 @@ void FGTrafficManager::startElement (const char * name, const XMLAttributes &at path.append(attval); readXML(path.str(), *this); } + elementValueStack.push_back( "" ); // cout << " " << atts.getName(i) << '=' << atts.getValue(i) << endl; } void FGTrafficManager::endElement (const char * name) { //cout << "End element " << name << endl; string element(name); + string value = elementValueStack.back(); + elementValueStack.pop_back(); + if (element == string("model")) mdl = value; else if (element == string("livery")) @@ -326,7 +330,7 @@ void FGTrafficManager::endElement (const char * name) { // flights.pop_back(); // } } - for (FGScheduledFlightVecIterator flt = flights.begin(); flt != flights.end(); flt++) + for (FGScheduledFlightVecIterator flt = flights.begin(); flt != flights.end(); flt++) { delete (*flt); } @@ -342,10 +346,7 @@ void FGTrafficManager::endElement (const char * name) { void FGTrafficManager::data (const char * s, int len) { string token = string(s,len); //cout << "Character data " << string(s,len) << endl; - if ((token.find(" ") == string::npos && (token.find('\n')) == string::npos)) - value += token; - else - value = string(""); + elementValueStack.back() += token; } void FGTrafficManager::pi (const char * target, const char * data) { diff --git a/src/Traffic/TrafficMgr.hxx b/src/Traffic/TrafficMgr.hxx index 4a46fcbeb..23d9b4c6c 100644 --- a/src/Traffic/TrafficMgr.hxx +++ b/src/Traffic/TrafficMgr.hxx @@ -43,7 +43,7 @@ class FGTrafficManager : public SGSubsystem, public XMLVisitor private: ScheduleVector scheduledAircraft; ScheduleVectorIterator currAircraft, currAircraftClosest; - string value; + vector elementValueStack; string mdl, livery, registration, callsign, fltrules, port, timeString, departurePort, departureTime, arrivalPort, arrivalTime,