2009-10-08 7 views
4

Je suis chargé de lire les fichiers de liste de propriétés d'Apple dans une application C++. Se concentrant principalement sur les fichiers plist de type XML spécifié dans OS X, qui simulent une implémentation de type XML .. implémentation d'Apple de leur liste de propriété est décrite ici:Implémentation de la liste de propriétés (plist) de Apple en C++

http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPages/man5/plist.5.html

Je me demande s'il y a des classes ou des librairies disponibles qui peuvent déjà lire ce type d'implémentation au sein de C++ standard (pas Objective-C); espérant trouver quelque chose plutôt que de rouler le nôtre. Y a-t-il des implémentations open-source de ce disponible?

+0

Êtes-vous sur l'environnement OS X? Pouvez-vous utiliser un pont C++/Obj-C pour appeler l'API native pour accéder au fichier plist? Sinon, j'utiliserais Xerces et l'analyserais en XML. – Alan

+0

http://stackoverflow.com/questions/1061005/calling-objective-c-method-from-c-method a quelques informations sur comment appeler Obj-C à partir de C++ – Alan

+0

https://github.com/animetrics/PlistCpp Cela ressemble à un concurrent récent et plutôt gentil. – berkus

Répondre

1

Les fichiers PList ne sont pas seulement du code XML, ce sont des fichiers XML, y compris des en-têtes XML valides.

Tout lecteur XML devrait être capable d'analyser ces fichiers en conséquence. Si vous cherchez une classe logique qui résume les fichiers, je n'en connais pas. Étant donné la documentation d'Apple, vous devriez être capable d'en écrire un vous-même avec un lecteur XML, même si cela prendrait du travail pour une compatibilité totale.

+3

Apple a aussi un format .plist compressé binaire. – RedGlyph

+0

Les DLL externes n'étaient pas une option. Cependant, elle a été validée, et nous avons pu utiliser TinyXml pour analyser le fichier plist et lancer manuellement les paires clé/valeur dans une structure de données. – werelord

0

Est-ce spécifique à la cible?

Pour Windows, il existe une solution brute qui consiste à utiliser les fonctions des bibliothèques dynamiques iTunes pour analyser les fichiers plist (format binaire ou texte brut).

C'est un code écrit à l'origine pour l'interface d'un iPod, mais vous pouvez facilement extraire les quelques fonctions qui vous intéressent

Le dépôt est sur cette page du projet:. http://code.google.com/p/t-pot/

Recherchez le fichier iPoTApi. h et iPoTApi.cpp, la fonction TranslatePLIST de la classe CiPoTApi. Je souhaiterais qu'il y ait une meilleure solution, au moment où j'ai essayé de le compiler à partir des sources d'Apple ciblées sur Windows mais c'est un vrai cauchemar, et les fichiers sont manquants. Donc, en utilisant leurs bibliothèques était un raccourci considérable.

Questions connexes