2012-04-08 92 views
1

我创建在Xcode其解析XML的应用程序,但我在此解析代码Xcode的XML解析问题

<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> 

我怎样才能在数据或值的网址有问题?

谢谢。

我的源代码:.M

// didStartElement在随后开始的;

- (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]; 


} 

回答

0

背后使用CDATA的想法是,无论是在它里面,它会被解析器忽略......但幸运的NSXMLParser有这种替代...

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

现在someString是另一个xml字符串,您可以使用另一个NSXMLParser实例解析(这是一个XML),希望这有助于。

+0

感谢您的重播。我已经尝试过,但它没有工作,它推动所有的描述线。我编辑了我的问题并将我的源代码。请问你能帮帮我吗。 – 2012-04-08 18:38:26

+0

我可以告诉你,你将需要两个NSXMLParser实例..只需在这里写完整的代码。 – 2012-04-08 18:48:50

+0

我无法编辑原始文章,因为它不需要更多的代码。所以我在这个链接上发表了; [链接](https://docs.google.com/document/d/1iuGDe7fDfkB8E9AzKliqh9KirMWJWLUBiZTiVV6ML2k/编辑) 现在感谢您的帮助。 – 2012-04-08 20:06:00