2009-01-02 8 views

Répondre

58

NSXMLParser est un analyseur SAX, ce qui signifie qu'il étapes dans le document XML, et vous informe (via des méthodes de délégué) de divers événements (comme le démarrage d'un noeud XML, trouver des attributs, etc.). Ce type de traitement XML est idéal pour l'analyse de documents volumineux et lorsque vous avez seulement besoin de récupérer une infime quantité de données à partir d'un gros fichier. Contrairement à SAX est le modèle DOM, où l'arborescence XML entière est analysée en mémoire (généralement avec un seul appel), puis vous pouvez explorer librement le document XML à partir de l'API présentée. C'est généralement beaucoup plus facile de travailler avec, car vous obtenez un accès aléatoire à l'ensemble du document XML.

Donc la première question à laquelle il faut répondre est la question SAX ou DOM. Si vous vous occupez de gros fichiers XML (disons 10 Mo ou plus), vous voudrez peut-être conserver SAX. Si vous travaillez avec de petits fichiers XML, ou de petits fragments XML, il est souvent beaucoup plus facile d'utiliser DOM.

Si en effet vous décidez d'aller avec DOM, vous avez quelques options. Libxml2 est une API très puissante écrite en C. C'est principalement pour l'utilisation de style DOM, mais il y a d'autres options si vous en avez l'expérience. Mais, comme il est écrit en C, il n'est pas souvent attrayant pour ceux qui sont plus familiers avec Objective-C (objets, autorelease), ou ceux qui viennent du monde .Net. Ainsi, il existe un besoin/un besoin d'un wrapper Objective-C natif autour de libxml pour le rendre plus familier. TouchXML est un tel wrapper. Cela fonctionne bien si vous avez seulement besoin d'un accès en lecture au XML. Si vous voulez modifier le XML, ou créer des fragments/documents XML à partir de zéro, je vous recommande d'aller avec KissXML.

+3

Hey Robbie, TouchXML prend en charge l'écriture XML. – schwa

+0

Hey Robbie, Pouvez-vous s'il vous plaît regarder dans ceci [Déclaration de 'xmlKeepBlanksDefault' doit être importé du module 'libxml2.parser' avant qu'il ne soit nécessaire] (https://stackoverflow.com/questions/48501624/declaration-of-xmlkeepblanksdefault- must-be-import-from-module-libxml2-pars) –

14

Voir XML Tutorial for iOS: How To Choose The Best XML Parser for Your iPhone Project:

Il y a beaucoup d'options quand il vient à l'analyse XML sur l'iPhone. L'iPhone SDK est livré avec deux bibliothèques différentes, et il existe plusieurs bibliothèques tierces populaires telles que TBXML, TouchXML, KissXML, TinyXML et GDataXML. Comment un développeur peut-il choisir le meilleur analyseur XML pour son projet? J'ai récemment examiné les différentes options disponibles, et j'ai fini par étendre l'exemple XMLPerformance d'Apple pour essayer chacune des bibliothèques ci-dessus pour apprendre comment elles fonctionnaient et comparer leurs performances. J'ai pensé que je partagerais ce que j'ai appris jusqu'à présent avec d'autres personnes qui pourraient être à la recherche de la meilleure bibliothèque XML pour leur projet iPhone. Dans ce tutoriel XML, nous allons faire une comparaison détaillée des fonctionnalités et des performances des bibliothèques les plus populaires de l'iPhone, expliquer comment choisir entre elles et donner un exemple de projet montrant comment lire les données XML en utilisant chacun des éléments ci-dessus. bibliothèques ...

2

il y a une autre bonne bibliothèque d'analyse XML à base de blocs - RaptureXML (github) par ZaBlanc, il fournissent l'API Objective-C au-dessus de libxml2, je vous recommande vraiment essayer.