Comme beaucoup suggéré vous pouvez le faire avec les bibliothèques de tiers. Un exemple sur comment vous pouvez le faire avec GDataXML.
Commencez par créer des objets personnalisés adaptés pour contenir les données. Identifiez les nœuds. Ici, il y a deux noeuds
- voyage
- point
Créer des classes modèle pour eux. Par souci de simplicité, je les ai tous faits comme des ficelles. Idéalement, il serait préférable d'inclure les heures NSDate
et les coordonnées CLLocation
et la durée en secondes.
@interface Trip : NSObject
@property (nonatomic, copy) NSString *label;
@property (nonatomic, copy) NSString *start_address;
@property (nonatomic, copy) NSString *end_address;
@property (nonatomic, copy) NSString *start_time;
@property (nonatomic, copy) NSString *end_time;
@property (nonatomic, copy) NSString *start_gps;
@property (nonatomic, copy) NSString *end_gps;
@property (nonatomic, copy) NSString *duration;
@property (nonatomic, strong) NSArray *points;
- (GDataXMLElement *)XMLNode;
- (NSString *)XMLString;
fichier .m
@implementation Trip
- (GDataXMLElement *)XMLNode{
GDataXMLElement *tripNode = [GDataXMLElement elementWithName:@"Mytrip"];
GDataXMLElement *startTimeElement = [GDataXMLElement elementWithName:@"start_time" stringValue:self.start_time];
[tripNode addChild:startTimeElement];
GDataXMLElement *endTimeElement = [GDataXMLElement elementWithName:@"end_time" stringValue:self.end_time];
[tripNode addChild:endTimeElement];
GDataXMLElement *startAddressElement = [GDataXMLElement elementWithName:@"start_address" stringValue:self.start_address];
[tripNode addChild:startAddressElement];
GDataXMLElement *endAddressElement = [GDataXMLElement elementWithName:@"end_address" stringValue:self.end_address];
[tripNode addChild:endAddressElement];
GDataXMLElement *startGpsElement = [GDataXMLElement elementWithName:@"start_gps" stringValue:self.start_gps];
[tripNode addChild:startGpsElement];
GDataXMLElement *endGpsElement = [GDataXMLElement elementWithName:@"end_gps" stringValue:self.end_gps];
[tripNode addChild:endGpsElement];
GDataXMLElement *durationElement = [GDataXMLElement elementWithName:@"duration" stringValue:self.duration];
[tripNode addChild:durationElement];
GDataXMLElement *labelElement = [GDataXMLElement elementWithName:@"label" stringValue:self.label];
[tripNode addChild:labelElement];
GDataXMLElement *routeNode = [GDataXMLElement elementWithName:@"route"];
for (RoutePoint *point in self.points) {
GDataXMLElement *pointNode = [point XMLNode];
[routeNode addChild:pointNode];
}
[tripNode addChild:routeNode];
return tripNode;
}
- (NSString *)XMLString{
return [[self XMLNode] XMLString];
}
Même chose pour la route Point
@interface RoutePoint : NSObject
@property (nonatomic, strong) NSString *gps;
@property (nonatomic, copy) NSString *speed;
- (GDataXMLElement *)XMLNode;
- (NSString *)XMLString;
fichier .m
@implementation RoutePoint
- (GDataXMLElement *)XMLNode{
GDataXMLElement *pointNode = [GDataXMLElement elementWithName:@"point"];
GDataXMLElement *gpsElement = [GDataXMLElement elementWithName:@"gps" stringValue:self.gps];
GDataXMLElement *speedElement = [GDataXMLElement elementWithName:@"speed" stringValue:self.speed];
[pointNode addChild:gpsElement];
[pointNode addChild:speedElement];
return pointNode;
}
- (NSString *)XMLString{
return [[self XMLNode] XMLString];
}
Créer une instance de voyage alimenter les valeurs
Trip *trip = [Trip new];
trip.start_time = @"06/06/2013 09:00:00 AM";
trip.end_time = @"06/06/2013 09:30:00 AM";
trip.start_address = @"12 NGO, Roseville, Mp";
trip.end_address = @"8 STE stree, Roseville, MP";
trip.start_gps = @"+40.689060,-74.044636";
trip.end_gps = @"+42.689060, -72.044636";
trip.duration = @"00:00:00:00";
trip.label = @"Roseville Trip";
RoutePoint *point = [RoutePoint new];
point.gps = @"+40.689060,-74.044636";
point.speed = @"1.2 Miles/Hr";
trip.points = @[point];
NSLog(@"%@",[trip XMLString]);
Est-ce à envoyer à un serveur distant? Y a-t-il une chance que JSON puisse supporter? Il est trivial d'encoder/décoder JSON dans iOS en utilisant des classes intégrées. XML n'est pas difficile, mais prend un peu plus de travail (pas de codeur XML intégré, donc vous devez écrire le vôtre ou utiliser une routine tierce, l'analyse XML (que vous ne faites pas ici, mais quand même) prend un peu plus travail que l'analyse JSON fait). Si vous devez utiliser XML, je suis sûr que les réponses ci-dessous vous aideront. – Rob