2010-01-19 26 views

Répondre

1

Vous pouvez tenter de le faire:

  • manipulations de cordes
  • XPATH

Id optent pour XPath sauf dans les cas les plus simples - et même dans ceux-ci, vous ne pouvez pas discuter contre xpath. Je ne suis pas sûr des bibliothèques, mais je sais que libXML est écrit en C et supporté sur l'iphone.

Pour les manipulations de cordes, vous pouvez utiliser les NS * famille de méthodes (substringFromIndex, substringToIndex, etc.) Et ne pas oublier. http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/Reference/Reference.html

Big Nerd Ranch, 'Parsing XML à Cocoa': http://weblog.bignerdranch.com/?p=48

+0

Même en suggérant une manipulation de chaîne, cela me fait grincer des dents. C'est une idée terrible. ;-) TouchXML est le chemin à parcourir. Je respecte Aaron Hillegasse et sa suggestion d'utiliser NSXMLParser comme il est rapide, mais TouchXML est assez rapide et gère facilement la plupart des sources de données XML. C'est génial car c'est une implémentation exacte du NSXMLDocument et des classes associées sur OS X. Vous pouvez utiliser les docs NSXMLDocument pour comprendre comment utiliser TouchXML à cause de cette relation. –

+0

hehe - Je sais que je sais, mais ça marche. –

1

J'ai utilisé deux approches: NSXMLParser pour les fichiers simples et petits, et libxml pour les fichiers plus volumineux. Mais il existe des bibliothèques telles que TouchXML qui peuvent aussi simplifier le processus. Fondamentalement, si vous avez un petit ensemble de données, en mémoire le traitement DOM peut fonctionner correctement. Mais dans un appareil tel que l'iPhone, il vaut mieux utiliser des analyseurs basés sur SAX tels que libxml2.

Lorsque vous devez charger les données:

[self performSelectorInBackground:@selector(LoadYourData) withObject:nil]; 

ne bloque pas le thread principal de l'interface utilisateur. Pour libxml2, vous devrez implémenter des rappels C pour traiter les blocs de données provenant d'une connexion NSURLConnection.

+0

Est-ce que TouchXML (de google right) n'est pas obsolète maintenant? –

+0

De Jonathan Wight, hébergé chez Google Code, oui. Hmm, la dernière fois que je l'ai regardé c'était l'été dernier, ce qui ressemble à la dernière fois qu'il a été mis à jour. Mais l'OS n'a pas changé depuis lors non plus ... – Don

+0

Je ne sais pas exactement ce que vous entendez par périmé, mais si vous voulez dire qu'il a été autour depuis un certain temps, alors la réponse est oui. Le point cependant est que c'est une excellente bibliothèque qui simplifie les tâches d'analyse XML. Je l'aime beaucoup mieux que NSXMLParser, moi-même et je ne connais pas de «nouvelles» bibliothèques qui font un meilleur travail. –

1

Pour tirer vers le bas XML ou d'autres choses sur http je recommande la recherche en utilisant ASIHTTPRequest

Ne hésitez pas à jeter un oeil à mes cours pratiques que j'ai créé pour analyser des documents XML simples comme vous pouvez obtenir de Nike +. Link

Fondamentalement, l'utilisation est comme suit

NameValueParser *parser = [NameValueParser parser]; 
[parser addFieldName:@"screenName"]; // Name 
[parser addFieldName:@"rank"];  // Position 
[parser addFieldName:@"progress"]; // Distance 
[parser parseData:data]; 

NSLog(@"%@", [parser list]); // Lets see what we got