0

Mon NSXMLParser casse sur cette chaîne:saut de ligne Parser si la chaîne contient –

<title>AAA &#8211; BCDEFGQWERTYUIO</title> 

Je l'ai analysé de cette façon, l'espoir est la bonne façon:

- (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string{ 
[...] 
if ([currentElement isEqualToString:@"title"]) { 
    if (![string isEqualToString:@""]) { 
      [title addObject:string]; 
      NSLog(@"str: %@", string); 
    } 
} 

il me retourne:

str: AAA
str: -
str: BCDEFGQWERTYUIO

Mais je veux retourner une seule chaîne:

str: AAA - BCDEFGQWERTYUIO

parce qu'il est le bon Titre.

Une idée?

Merci.

Répondre

1

Je trouve qu'il est préférable de créer votre objet dans la méthode didEndElement. De cette façon, vous pouvez simplement ajouter les chaînes de caractères à une chaîne temporaire. Donc, vous pourriez faire quelque chose comme ci-dessous (REMARQUE: le code non testé)

Dans votre tête d'objet:

NSMutableString *currentElementData; 

...

@property (nonatomic, retain) NSMutableString *currentElementData; 

Et dans votre code d'analyse syntaxique vous auriez

- (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string{ 
[...] 
if ([currentElement isEqualToString:@"title"]) { 
    [currentElementData appendString:string]; 
    } 
} 

Puis plus tard dans votre élément a fini

- (void) parser: (NSXMLParser *) parser didEndElement: (NSString *) elementName...{ 
    [...] 
    if ([elementName isEqualToString:@"title"]) { 
     [title addObject:currentElementData]; 
     [currentElementData setString:@""]; 
     } 
    } 
+0

Ok, c'est correct. Merci mec! Ah, dans votre snipplet, corrigez [currentElementData setString: @ ""]; – elp

+0

Mise à jour avec votre correctif. Heureux d'avoir pu aider. – Walter

0

vous pouvez utiliser CDATA section dans votre xml parce caractères tels que « < » et « & » sont illégales dans des éléments XML. "" génère une erreur car l'analyseur l'interprète comme le début d'un nouvel élément. "&" génère une erreur car l'analyseur l'interprète comme le début d'une entité de caractères.

+0

Je ne peux pas utiliser CDATA, parce que c'est un analyseur de WordPress Feed rss et je ne peux pas éditer xml. Il utilise CDATA seulement dans la balise "description". – elp

Questions connexes