Vai al contenuto

Creazione di un file XML


Messaggi raccomandati

Ciao a tutti,

   la mia domanda è molto semplice. Mi sto avvicinando alla programmazione OSX con Objective-C e volevo creare un semplice file xml.

 

Con l'aiuto della documentazione ufficiale ho partorito questo:

 

        NSXMLDocument *document = NULL;

        NSXMLElement *root = NULL;

        NSXMLElement *node1 = NULL;

        NSXMLElement *node2 = NULL;

        NSXMLElement *node3 = NULL;

        NSData *data = NULL;

        

        root = [[NSXMLElement alloc] initWithName:@"root"];

        document = [[NSXMLDocument alloc] initWithRootElement:root];

        [document setVersion:@"1.0"];

        

        node1 = [[NSXMLElement alloc] initWithName:@"nodo1" stringValue:@"valore1"];

        node2 = [[NSXMLElement alloc] initWithName:@"nodo2"];

        node3 = [[NSXMLElement alloc] initWithName:@"nodo3" stringValue:@"valore3"];

        [node2 addChild:node3];

        [node1 addChild:node2];

        [root addChild:node1];

        

        // Scrive file:

        data = [document XMLDataWithOptions:NSXMLNodePrettyPrint];

        [data writeToFile:@"/Users/aponzio/Documents/Xcode/test.xml" atomically:YES];

 

ma il file generato non è identato correttamente:

 

<?xml version="1.0" standalone="no"?>
<root>
    <nodo1>valore1<nodo2>
            <nodo3>valore3</nodo3>
        </nodo2>
    </nodo1>
</root>
 
dove sbaglio?
 
Grazie,
Andrea.

 

 

tu

Link al commento
Condividi su altri siti

Grazie per il tempo che mi dedichi e che dedichi alla mia banalissima domanda.

 

Il risultato dovrebbe essere questo:

 

<?xml version="1.0" standalone="no"?>
<root>
    <nodo1>valore1
        <nodo2>
            <nodo3>valore3</nodo3>
        </nodo2>
    </nodo1>
</root>
 
dove il tag <nodo2> sia correttamente allineato, anche perchè credo che sia lo scopo dell'opzione NSXMLNodePrettyPrint.
 
Giusto?
 
Andrea.
Link al commento
Condividi su altri siti

ah scusa pensavo parlassi di programmazione ios.

 

comunque l'unica cosa che mi viene in mente è di cambiare l'ordine degli addChild. non so se funziona ma prova. quindi prova a fare

 

[root addChild:node1];

[node1 addChild:node2];

[node2 addChild:node3];

      

piuttosto che

 

 

[node2 addChild:node3];

[node1 addChild:node2];

[root addChild:node1];

 

 

​magari è una cavolata ma io proverei

Hai un'idea per un'app ma non sai programmare? Contattami. Trovi gli indirizzi sul mio sito: http://www.2ciphonedevelopers.com

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...