2010-10-05 3 views
0

C'est le xml que je reçois de web:obtenir des valeurs d'attribut de retour XML

<?xml version="1.0"?> 
<abc>87C4A556-B7E5-5AE4-81FE-86BE0C6306E1</abc> 
<abc2>P29077758</abc2> 
<abc3>55AGD99D</abc3> 
<abc4>147</abc4> 
<abc5>1286259226</abc5> 
<abc6>USA</abc6> 
<abc7>US</abc7> 

et en utilisant ce pour obtenir attribut:

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if([elementName isEqualToString:@"a"]) 
    { 
     recordResults = FALSE; 
    // greeting.text = soapResults; 
     [soapResults release]; 
     soapResults = nil; 
    } 
} 

Quelque chose comme ça, mais je n'ai pas toute idée comment puis-je obtenir l'attribut de xml renvoyé et affecter ces variables retournées dans ma variable créée. Comment puis-je faire ceci?

+0

Si vous obtenez vraiment ce "XML", vous êtes plutôt foutu. Ce n'est pas bien formé et aucun véritable analyseur XML ne le consommera. – Boldewyn

+0

@Boldewyn .... en fait, j'ai supprimé les attributs réels avec ces exemples de chaînes ... ce n'est pas le xml réel mon ami. – iscavengers

Répondre

1

Je recommande fortement d'utiliser TouchXML pour effectuer votre analyse XML.

Personnellement, j'ai eu toutes sortes de problèmes avec NSXMLParser et j'ai fini par utiliser TouchXML. Fonctionne un régal!

+0

va essayer TouchXML Alastair Pitts. – iscavengers

1

Vous devez mettre en œuvre les méthodes suivantes: - Une façon vous pouvez utiliser est: -

  • (void) analyseur: analyseur (NSXMLParser *) didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiedName: (NSString *) qname attributs: (*) NSDictionary attributeDict
    {//
    vérifier que l'élément est celui que vous voulez. Si c'est alors initialiser la chaîne dans laquelle vous voulez stocker la valeur.
    if (nomElément isEqualToString: @ "abc")
    {
    tempString = [[NSMutableString alloc] init];
    }
    }
  • (void) analyseur: (NSXMLParser *) analyseur foundCharacters: (NSString *) chaîne
    {

    [tempString appendString:string]; 
    

}
- analyseur (vide) :(NSXMLParser *) parser didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualifiéName: (NSString *) qName
{
si (elementName isEqualToString: @ "abc")
{
self.StringToStore = tempString;
}
}

+0

Merci Javal, mais j'ai besoin de savoir, StringToStore cette var va stocker la valeur de abc droite? si je veux assigner chaque valeur d'attribut, je veux dire, abc1, abc 2 abc3, que wat je hv à faire? Merci pour la réponse BTW – iscavengers

+0

cela va stocker la valeur entre les balises. le code que j'ai écrit mémorisera la valeur , c'est-à-dire la marque (87C4A556-B7E5-5AE4-81FE-86BE0C6306E1). le xml ayant un élément tag et ils ne sont pas appelés attributs. Les attributs sont pour e.g . ici la valeur et le nom sont des attributs. –

+0

donc pour chaque tag que vous avez juste besoin d'ajouter si la condition vérifie le nom de l'élément. –

Questions connexes