]> git.mxchange.org Git - flightgear.git/commitdiff
Fix Traffic Manager XML parser
authorfredb <fredb>
Sun, 1 Jun 2008 11:56:32 +0000 (11:56 +0000)
committerfredb <fredb>
Sun, 1 Jun 2008 11:56:32 +0000 (11:56 +0000)
src/Traffic/TrafficMgr.cxx
src/Traffic/TrafficMgr.hxx

index 70ce07800e51e07b33d8bf66049fd4048a68de60..80402487dcf7b620c181eb9da8c939c1f7573a8d 100644 (file)
@@ -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) {
index 4a46fcbeb7a68d9baccc65c68420c99dd5c0e62a..23d9b4c6cfce213f46f44b7dbae2fce7b22e9f9b 100644 (file)
@@ -43,7 +43,7 @@ class FGTrafficManager : public SGSubsystem, public XMLVisitor
 private:
   ScheduleVector scheduledAircraft;
   ScheduleVectorIterator currAircraft, currAircraftClosest;
-  string value;
+  vector<string> elementValueStack;
 
   string mdl, livery, registration, callsign, fltrules, 
     port, timeString, departurePort, departureTime, arrivalPort, arrivalTime,