2013-06-07 4 views
-4
<?xml version="1.0"?> 
<Mytrip> 
    <start_time>06/06/2013 09:00:00 AM</start_time> 
    <end_time>06/06/2013 09:30:00 AM</end_time>  
    <start_address> 12 NGO, Roseville, Mp</start_address> 
    <start_gps>+40.689060,-74.044636</start_gps> 
    <end_address>8 STE stree, Roseville, MP</end_address> 
    <end_gps>+42.689060, -72.044636</end_gps> 
    <duration>00:00:00:00</duration> 
    <label>Roseville Trip</label> 
    <route> 
     <point> 
      <gps>+40.689060,-74.044636</gps> 
      <speed>1.2 Miles/Hr</speed> 
     </point> 
     <point> 
      <gps>+41.689060,-74.044636</gps> 
      <speed>5.0 Miles/Hr</speed> 
     </point> 
    </route> 
</Mytrip> 

je veux créer un fichier XML ci-dessus le format .. dans ce -point- peuvent être des moyens multiples i obtenir les données de ma base de données ..Comment créer un fichier au format XML par programme?

+0

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

Répondre

-3

Je pensais à ce sujet, un certain temps)) Il sont des classes XMLWriter, pour créer du XML. Mais je n'ai pas assez de temps pour comprendre comment ils fonctionnent. De toute façon, XML est juste une chaîne, que vous convertissez en données. Dans ce cas, je l'ai créé par moi-même))

NSMutableString *XMLString = [[NSMutableString alloc] init]; 
[XMLString appendString:@"<?xml version=\"1.0\"?> \n"]; 
[XMLString appendString:@"<scene> \n"]; 
//... etc.. 

Vous pouvez dire que c'est mauvais exemple, mais ça fonctionne pour moi)

3

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

  1. voyage
  2. 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]); 
Questions connexes