2009-12-17 3 views
2

Je voudrais connaître quelques bibliothèques dans l'objectif-C pour l'analyse xml. Je pense qu'il est un besoin très commun, mais j'ai trouvé des ressources limitées pour gérer cette tâche:Bibliothèques Objective-C pour l'analyse XML

Quelle est votre meilleure solution pour travailler avec XML dans le langage Objective-C ? Veuillez nous conseiller

Quelle est la solution que vous avez utilisée pour votre produit?

+0

Quel est le problème si vous utilisez NSXMLParser? Etes-vous sûr que vous voulez SAX (analyse), pas DOM? – martinr

+0

oui, ce que je veux dire est SAX pas DOM. Le problème que j'ai avec NSXML Parser est que ce n'est pas très facile à utiliser. Pour naviguer dans une structure XML complexe, c'est un gâchis. S'il vous plaît, suggérez les outils que vous jugez les meilleurs pour résoudre la situation. –

Répondre

2

NSXMLParser est une classe orientée flux; vous le configurez et recevez des rappels de délégué quand il détecte quelque chose. Habituellement, ce n'est pas ce que vous voulez faire, mais peut être beaucoup plus rapide et moins de mémoire. TouchXML analysera le XML lui-même à l'aide de libxml et créera une arborescence d'objets pour l'ensemble de la structure XML. Cela vous permet d'accéder facilement au contenu de l'arborescence XML, en utilisant des méthodes de parcours manuel ou des XPath basiques (un support XPath plus sophistiqué est prévu).

+0

Salut Steve, je connais ces deux ressources pour l'apprentissage de touchxml et libxml2. Avez-vous plus à partager avec nous? Tutoriel TouchXML: http://dblog.com.au/general/iphone-sdk-tutorial-building-an-advanced-rss-reader-using-touchxml-part-1/ tutoriel libxml2: http: // cocoawithlove .com/2008/10/using-libxml2-for-parsing-et-xpath.html –

+0

Vous ne savez pas vraiment utiliser libxml2. TouchXML a été conçu pour être une implémentation de remplacement pour les classes NSXML * dans la plupart des cas, vous pouvez donc consulter la documentation spécifique à Mac pour la classe dont vous avez besoin dans TouchXML (par exemple CXMLDocument-> NSXMLDocument, CXMLElement-> NSXMLElement, CXMLNode-> NSXMLNode , etc.). En général, vous devez simplement créer un objet CXMLDocument avec le code XML dont vous avez besoin. Ensuite, vous pouvez interroger l'élément racine, soit en utilisant la traversée manuelle (en utilisant childAtIndex :) ou en utilisant XPath et - [CXMLNode nodesForXPath: error:]. Espérons que ça aide! –

0

Il sert un but étroit, mais si votre objectif est d'analyser le HTML en désordre, vous pouvez essayer une bibliothèque statique que j'ai commencé à appeler TagScraper. Il ne gère pas beaucoup/la plupart des entités XML/HTML correctement, mais il pourrait facilement être corrigé. URL: http://github.com/searls/TagScraper

Sa valeur est qu'il fournit un mécanisme simple XPath qui cache le rangeait/interrogation/montage pour vous, et il fournit les éléments analysés & attributs dans une structure de données arborescente de Tag.h nœuds.

Questions connexes