如何用[CDATA]标签解析元素

时间:2012-09-26 17:37:38

标签: nsxmlparser cdata rss-reader

我正在尝试使用NSScanner从我的标签中提取图像,但我的标签有一个[CDATA]块,使我的NSXLM解析器忽略该标签内的所有内容。我如何解析我的标签内的数据,下面是rss feed的示例,以及解析器代码的示例。

<item>
        <title>Kendrick Lamar &amp; Lady Gaga in Chi-Town</title>
        <link>http://www.motahiphop.com/rap-pix/36-rap-pix/2346-kendrick-lamar-lady-gaga-in-chi-town</link>
        <guid isPermaLink="true">http://www.motahiphop.com/rap-pix/36-rap-pix/2346-kendrick-lamar-lady-gaga-in-chi-town</guid>
        <description><![CDATA[<p style="text-align: center;"><img src="http://www.motahiphop.com/images/lady-gaga-kendrick-lamar.jpg" width="500" alt="Kendrick Lamar with Lady Gaga at Pitchfork festival" /></p>

上周发布后,她是肯德里克·拉马尔的粉丝。 Lady Gaga在芝加哥Pitchform音乐节上采访了Compton MC后台。

]]&gt;             gqwebsites@gmail.com(超级用户)             精选             Rap Pix             Rap Pix             星期一,2012年7月16日13:18:45 -0400         

Parser code snippet:

if ([elementName isEqualToString:@"item"]) 
{
    elements[@"title"] = title;
    elements[@"date"] = date;
    elements[@"summary"] = summary;
    elements[@"link"] = link;
    elements[@"description"] = description;

    //NSLog(@"%@", description);

    [posts addObject:elements];
}

1 个答案:

答案 0 :(得分:0)

经过一些研究后,我在另一篇文章中找到了答案,我使用了这种方法

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{
    NSString *description = [[NSString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
    NSString *storyImageURL = [self getFirstImageUrl:description];
    NSLog(@"%@",storyImageURL);

我在最后添加了NSLog,因此您可以NSLog结果并检查数据是否被拉出。像魅力一样工作