Export XML

maestricmaestric Membre
13:47 modifié dans API AppKit #1
Comment exportez-vous vos objets en XML ? Je ne veux pas utiliser NSXML de Tiger car je souhaite rester compatible avec Panther. Y-a-t-il une façon simple de créer un arbre XML et de le formater pour l'écrire dans un fichier ? (comme en Java et Python).

Réponses

  • elfelf Membre
    13:47 modifié #2
    C'est bête comme tout:

    Tu fais un NSDictionnary et tu fais un [monDict writeToFile:fileName automaticly:YES];

    Bon c'est du plist, plus du XML, si tu veux faire tes propre balises je ne vois pas comment faire ça.
  • AliGatorAliGator Membre, Modérateur
    13:47 modifié #3
    Le plist c'est du XML.
    Ce qu'on appelle un fichier plist, c'est juste un XML qui utilise le DTD d'Apple pour décrire les balises des fichiers .plist

    Maintenant avec un writeToFile oui en effet ça fait un XML utilisant le format plist, donc limité aux balises String, Number, Boolean, Dict, Array, Data (et j'en oublie peut-être mais si oui, y'en a pas beaucoup plus)
  • elfelf Membre
    13:47 modifié #4
    Oui, mais ce que je voulais dire c'était que on ne peut pas faire des balise perso avec plist, genre <bonjour argument="salut">ça va?</bonjour> <signature />
  • maestricmaestric Membre
    13:47 modifié #5
    dans 1133281208:

    Oui, mais ce que je voulais dire c'était que on ne peut pas faire des balise perso avec plist, genre <bonjour argument="salut">ça va?</bonjour> <signature />


    Effectivement, et c'est ce que je cherche à  faire :(
  • AliGatorAliGator Membre, Modérateur
    novembre 2005 modifié #6
    Alors regarde dans la classe NSXMLDocument.

    ou rentre cette adresse dans ton navigateur :

    file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Conceptual/NSXML_Concepts/index.html

    [EDIT]Ah mince, tu as dit que tu ne voulais pas utiliser NSXML... (ah c'est Tiger only ? zut)... ben là ... t'as plus qu'à  chercher sur le net une éventuelle classe qu'une bonne âme aurait développé pour faire ça avant Tiger ;)
  • fouffouf Membre
    novembre 2005 modifié #7
    Ah moins que tu ne fasses ta propre classe d'exportation. Pour te donner un exemple de comment faire, j'ai mis en attaché un projet de framework qui permet d'exporter des documents en SVG. Voila comment ca marche :
    Je défini un protocole SVGExporting avec une méthode SVGString qui retourne, vous vous en serez pas douté, une NSString. Ensuite, dans la méthode de classe, on fournit des arguments dont un NSArray (les autres n'ont pas trop d'importance, c'est uniquement pour SVG). Afin de stocker le contenu du document XML, il ya une NSMutableString qui va être changée.

    On y ajoute le traditionnel DOCTYPE des document DTD et la balise d'amorce (comme <html> dans un document HTML ...) (suivie d'une manip' spéciale SVG) puis on va commencer à  parcourir le tableau avec un NSEnumerator. On teste chaque objet pour savoir si il est conforme au protocole GSVGExporting et si c'est le cas, on ajoute la NSString retournée au buffer (la NSMutableString). Une fois que le tableau a été parcouru, on ajoute la balise de fin et on traduit la NSMutableString en NSData.

    [Fichier joint supprimé par l'administrateur]
  • maestricmaestric Membre
    13:47 modifié #8
    dans 1133298853:

    Ah moins que tu ne fasses ta propre classe d'exportation. Je définis un protocole SVGExporting ..


    C'est une idée intéressante, mais c'est quand même dommage d'avoir à  se taper soi-même la génération du string XML et son parsing ensuite lors de l'importation, et ça pour chaque classe !  :-\\

    Sinon j'ai parcouru quelques frameworks cocoa pour faire du XML, et ils m'ont l'air passablement compliqués à  mettre en oeuvre et utiliser. Je crois que pour l'instant je vais me contenter de texte csv  :o

    PS - désolé pour le retard de la réponse
  • elfelf Membre
    13:47 modifié #9
    Normalement un plist devrais suffire amplement à  tes besoins...

    Pourquois à  tu absolument besoin de XML?
  • maestricmaestric Membre
    13:47 modifié #10
    Pour pouvoir avoir un format d'import/export standard, XML donc. Les plists me semblent être des fichiers XML un peu bridés (définition de ses propres balises, par exemple). Mais je ne connais pas très bien, je vais quand même y jeter un coup d'oeil.  ;)
Connectez-vous ou Inscrivez-vous pour répondre.