2010-02-24 8 views
0

J'ai un NSString comme ça? (dans l'application iPhone)obtenir la valeur de l'élément

NSString *xmlStr = "<?xml version=1.0 encoding=UTF-8> 
         <information> 
          <name>John</name> 
          <id>435346534</id> 
          <phone>045635456</phone> 
          <address>New York</address> 
         </information>" 

Comment puis-je obtenir des éléments de valeur? (Ai-je besoin de convertir au format XML et obtenir la valeur des éléments? Ou séparer la chaîne? De toute façon s'il vous plaît dites-moi?)

Merci les gars.

Répondre

0

Si vous souhaitez utiliser une chaîne fractionnée, vous pouvez utiliser la segmentation de chaînes en utilisant la méthode "componentsSeparatedByString". Ceci est une méthode plus lourde bien sûr, plutôt que le XMLParser recommandé

Pour obtenir le nom.

NSArray *xmlStr_first_array = [xmlStr componentsSeparatedByString: @"<name>"]; 

NSString *xmlStr_split = [NSString stringWithFormat:@"%@",[xmlStr_first_array objectAtIndex:1]]; 

NSArray *xmlStr_second_array = [xmlStr_split componentsSeparatedByString: @"</name>"]; 

NSString *name = [NSString stringWithFormat:@"%@",[xmlStr_second_array objectAtIndex:0]]; 
+0

Je suis en désaccord avec cette approche ... – Vladimir

+0

@Vladimir. Ce n'est certainement pas recommandé. Aidez ce gars en énumérant les inconvénients. Vous avez certainement plus que moi. – erastusnjuki

+0

Difficile à dire ... c'est juste une mauvaise façon de gérer xml :) – Vladimir

0

Votre chaîne est déjà au format xml et vous devez l'analyser pour récupérer les données. Plusieurs options sont disponibles - par exemple, vous pouvez utiliser la classe NSXMLParser ou la bibliothèque libxml.

Editer:XMLPerformance L'exemple de projet montre comment utiliser les deux approches et comparer leurs performances.

+0

Avez-vous le code source? – MartinJoo

0

La solution la plus évidente consiste à utiliser un analyseur XML pour extraire les valeurs de chaque élément. Vous pouvez utiliser l'excellent TBXML pour cette tâche. Il fournit une interface très simple où il ne faudrait pas plus de quelques lignes pour récupérer les valeurs souhaitées. L'inconvénient de l'utilisation de cette petite bibliothèque est qu'elle (pour autant que je sache) charge toutes les données XML en mémoire. Dans ce cas particulier, cependant, cela ne pose aucun problème.

Il y a bien sûr aussi l'option d'utiliser le NSXMLParser, bien que ce soit un analyseur piloté par les événements, et donc un peu moins simple à utiliser.