2012-04-08 20 views
1

ich eine Anwendung in Xcode bin zu schaffen, die xml analysieren, aber ich habe ein Problem beim Parsen dieses CodeXcode XML-Parsing Ausgabe

<description> 
<![CDATA[ 
<object type="application/x-shockwave-flash" data="http://www.youtube.com/v/Sg8z_On_Jmc?fs=1" width="580" height="25"> <param name="movie" value="http://www.youtube.com/v/Sg8z_On_Jmc?fs=1" /> <param name="allowFullScreen" value="true" /> </object> 
]]> 
</description> 

Wie kann ich die URL in Daten oder in Wert zu erhalten?

Danke.

Mein Quellcode: .M

// didStartElement bei dann der Anfang;

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 

    if (![self currentStringValueTitle]) { 

     [self setCurrentStringValueTitle:[[NSMutableString alloc] initWithCapacity:50]]; 

    } 

    if (![self currentStringValueImage]) { 

     [self setCurrentStringValueImage:[[NSMutableString alloc] initWithCapacity:50]]; 

    } 


    if (![self currentStringValueDescription]) { 

     [self setCurrentStringValueDescription:[[NSMutableString alloc] initWithCapacity:50]]; 

    } 


    [[self currentStringValueTitle] appendString:string]; 
    [[self currentStringValueDescription] appendString:string]; 
    [[self currentStringValueImage] appendString:string]; 

    NSLog(@"Başlık: %@", [self currentStringValueTitle]); 
    NSLog(@"Detay: %@", [self currentStringValueDescription]); 

} 


- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 

    if ([elementName isEqualToString:@"title"]) { 

     [[self titleArray] addObject:[self currentStringValueTitle]]; 


    } 
    if ([elementName isEqualToString:@"pubDate"]) { 


     [[self descriptionArray] addObject:[self currentStringValueDescription]]; 


    } 

    if ([elementName isEqualToString:@"description"]) { 

     [[self imageArray] addObject:[self currentStringValueImage]]; 
    } 


    [self setCurrentStringValueTitle:nil]; 
    [self setCurrentStringValueDescription:nil]; 
    [self setCurrentStringValueImage:nil]; 


} 

Antwort

0

Die Idee CDATA hinter ist, dass alles, was in ihm drin ist, wird es vom Parser ignoriert ... aber zum Glück hat NSXMLParser eine Alternative für diesen ...

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock 
{ 
    NSString *someString = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding]; 
} 

jetzt somestring ist eine andere XML-Zeichenfolge für Sie, die Sie analysieren können (dies ist eine XML) mit einer anderen Instanz von NSXMLParser ... in der Hoffnung, dies hilft.

+0

Danke für die Wiederholung. Ich habe es versucht, aber es hat nicht funktioniert es schieben Sie die ganze Beschreibung Zeile. Ich habe meine Frage bearbeiten und meinen Quellcode eingeben. Kannst du mir bitte helfen. –

+0

Ich kann Ihnen sagen, dass Sie zwei Instanzen von NSXMLParser benötigen .. kann nur den vollständigen Code hier schreiben .. –

+0

Ich konnte den ursprünglichen Beitrag nicht bearbeiten, weil es nicht mehr Codes dauert. Also habe ich auf diesem Link veröffentlicht; [link] (https://docs.google.com/document/d/1iuDe7fDfkB8E9AzKliqh9KirMWJWLUBiZTiVV6ML2k/edit) Vielen Dank für Ihre Hilfe. –