2009-07-03 5 views
1

Je dois analyser un fichier XML à l'aide de NSXMLParser. Il y a tellement de balises HTML dans celles-ci, donc quand j'essaye de l'analyser, cela va stocker la chaîne jusqu'à ça et ensuite aller à la méthode des caractères trouvés et commencer à l'ajouter. mon code est:Analyse du fichier XML à l'aide de NSXMLParser

if (Bio_CResults) { 
    [BioResults appendString: string]; 
    [Info appendString:string]; 

    [stringarr addobject:Info]; 
    NSLog(@"bio==%@",BioResults); 
    NSLog(@"string==%@",string); 
} 

et je veux l'ajouter dans le tableau de chaîne, mais ici, il fera créer objet supplémentaire de tableau. à savoir

stringarr objectAtIndex 0 = abc 
stringarr objectAtIndex 1 = def 
stringarr objectAtIndex 2 = ghi 

mais en fait je veux tous ensemble dans un objet parce qu'ils sont en fait une chaîne seulement .. plz me aider pour cette

Répondre

3

Si vous ne même pas besoin de chaînes multiples objets que vous pouvez utilisez un NSMutableString au lieu d'un tableau. Il suffit d'utiliser la méthode appendString: pour ajouter à la fin de la chaîne:

NSMutableString *string = [NSMutableString string]; 
[string appendString:@"abc"]; 
[string appendString:@"def"]; 
NSLog(@"New string is %@", string); 

Cela log « Nouvelle chaîne est abcdef ».


Si vous voulez vraiment un tableau, utilisez un NSMutableArray au lieu d'un NSArray. De cette façon, vous pouvez modifier un objet sur place (remplacez une chaîne par une nouvelle chaîne créée en ajoutant une autre chaîne). Ainsi, par exemple:

// First create an array with @"abc" 
NSMutableArray *mArray = [NSMutableArray arrayWithObject:@"abc"]; 

// Next get the first object as a string and append @"def" to it in-place 
NSString *string = (NSString *)[mArray objectAtIndex:0]; 
[mArray replaceObjectAtIndex:0 withObject:[string stringByAppendingString:@"def"]]; 

// Now get the new first object 
NSLog(@"First object is %@", (NSString *)[mArray objectAtIndex:0]);

Cela enregistrera le message "Premier objet est abcdef".

+0

Je pense qu'il essaie déjà d'utiliser un tableau mutable, et je devine que "addobject:" est juste une faute de frappe dans sa question. Et il utilise également "appendString:", donc je ne suis pas sûr de ce qu'il essayait d'accomplir avec le tableau mutable du tout. :-) –

+0

Peut-être que le problème est qu'il ajoute l'objet plutôt que de faire un appel à replaceObjectAtIndex: withObject :? Je pense que ces deux chaînes mutables qu'il appelle appendString: on sont les chaînes qu'il utilise pour stocker les données de l'analyseur XML (de l'analyseur: foundCharacters: méthode), et il les ajoute simplement au tableau plutôt que de remplacer leurs anciennes contreparties. De toute façon, la réponse est la suivante :) – Tim

1

Je n'aime vraiment pas NSXmlParser. Vous voudrez peut-être lire mon article sur l'utilisation de RegxKitLite http://blog.bluespark.co.nz/?p=51

Cela pourrait être utile. J'espère que cela ne vous mènera pas dans la mauvaise direction.

Cheers, John.

1

Il y a tellement de balises HTML dans les ...

Soyez conscient que HTML est généralement pas XML valide. Si vous analysez du code HTML, un analyseur XML va lancer une erreur dans le document.

Il est peut-être préférable de créer un WebView, de charger le contenu HTML dans celui-ci, puis d'obtenir un document DOMDocument à partir du cadre principal de la vue et de parcourir la hiérarchie du DOM. Vous n'avez pas à mettre la vue dans une fenêtre; vous pouvez simplement l'utiliser pour obtenir un DOMDocument.

Si vous analysez XML et que vous voulez dire "balises XML", vous pouvez ignorer cette réponse.