rss解析

rss数据格式如下:

 

<rss version="2.0">
<channel>
<title>
<![CDATA[国际要闻-新浪新闻]]>
</title>
<image>
<title>
<![CDATA[新闻中心-国际新闻]]>
</title>
<link>http://news.sina.com.cn/world</link>
<url>http://www.sinaimg.cn/home/deco/2009/0330/logo_home_news.gif</url>
</image>
<description>
<![CDATA[国际新闻-焦点新闻]]>
</description>
<link>http://news.sina.com.cn/491/2008/0827/1.html</link>
<language>zh-cn</language>
<generator>WWW.SINA.COM.CN</generator>
<ttl>5</ttl>
<copyright>
<![CDATA[Copyright 1996 - 2012 SINA Inc. All Rights Reserved]]>
</copyright>
<pubDate>Thu, 28 Jun 2012 13:57:02 GMT</pubDate>
<category>
<![CDATA[]]>
</category>
<item>
<title>
<![CDATA[俄罗斯称不准备在叙利亚问题采取特别措施]]>
</title>
<link>http://go.rss.sina.com.cn/redirect.php?url=http://news.sina.com.cn/w/2012-06-28/184124676271.shtml</link>
<author>WWW.SINA.COM.CN</author>
<guid>http://go.rss.sina.com.cn/redirect.php?url=http://news.sina.com.cn/w/2012-06-28/184124676271.shtml</guid>
<category>
<![CDATA[国际新闻-焦点新闻]]>
</category>
<pubDate>Thu, 28 Jun 2012 10:41:57 GMT</pubDate>
<comments></comments>
<description>
<![CDATA[  新华网莫斯科6月28日电 (记者 周良)俄罗斯武装力量总参谋长马卡罗夫28日在莫斯科表示,尽管叙利亚“已经爆发内战”,但俄罗斯不会因此采取“特别措施”。
         
           马卡罗夫当天对俄罗斯媒体说,他同意叙利亚总统巴沙尔所说的该国已经爆发内战的说法。但是,俄罗斯不会采取“特....]]>
</description>
</item>
<item>
<title>
<![CDATA[瑞典男子怀疑妻子红杏出墙吃掉其嘴唇]]>
</title>
<link>http://go.rss.sina.com.cn/redirect.php?url=http://news.sina.com.cn/w/2012-06-28/180524676120.shtml</link>
<author>WWW.SINA.COM.CN</author>
<guid>http://go.rss.sina.com.cn/redirect.php?url=http://news.sina.com.cn/w/2012-06-28/180524676120.shtml</guid>
<category>
<![CDATA[国际新闻-焦点新闻]]>
</category>
<pubDate>Thu, 28 Jun 2012 10:05:25 GMT</pubDate>
<comments></comments>
<description>
<![CDATA[  据英国《每 日电讯报》6月27日报道,瑞典一名男子因怀疑妻子红杏出墙,一怒之下竟吃掉了她的嘴唇,声称让她以后再也没法跟别的男人接吻。
         
           这个恐怖的事件发生在今年5月。男子现年 52岁,来自瑞典首都斯德哥尔摩,在当地一所学院担任教授,因为某些原因他的姓名未被透露....]]>
</description>
</item>
<item>
<title>
<![CDATA[视频:日本萌系电视台女主播网络爆红]]>
</title>
<link>http://go.rss.sina.com.cn/redirect.php?url=http://video.sina.com.cn/p/news/w/v/2012-06-28/180461790937.html</link>
<author>WWW.SINA.COM.CN</author>
<guid>http://go.rss.sina.com.cn/redirect.php?url=http://video.sina.com.cn/p/news/w/v/2012-06-28/180461790937.html</guid>
<category>
<![CDATA[国际新闻-焦点新闻]]>
</category>
<pubDate>Thu, 28 Jun 2012 10:04:30 GMT</pubDate>
<comments></comments>
<description>
<![CDATA[  日本电视圈最近吹起一股“甜心主播”风。当中引发网友疯狂讨论的,莫过于今年才22岁的静冈朝日电视台新人主播牧野结美。她一双水汪汪的大眼睛加上甜美笑容,一出道就掳获观众的心。因为初登主播台才几个月,不免紧张猛吃螺丝、不断低头看稿,但网友大多表示可以谅解,理由是“....]]>
</description>
</item>
<item>
<title>
<![CDATA[高清图:微软希腊分公司遭恐怖袭击暂停运营]]>
</title>
<link>http://go.rss.sina.com.cn/redirect.php?url=http://slide.news.sina.com.cn/w/slide_1_2841_24419.html</link>
<author>WWW.SINA.COM.CN</author>
<guid>http://go.rss.sina.com.cn/redirect.php?url=http://slide.news.sina.com.cn/w/slide_1_2841_24419.html</guid>
<category>
<![CDATA[国际新闻-焦点新闻]]>
</category>
<pubDate>Thu, 28 Jun 2012 10:00:23 GMT</pubDate>
<comments></comments>
<description>
<![CDATA[]]>
</description>
</item>
<item>
<title>
<![CDATA[欧洲科学家发现猴面兰花(图)]]>
</title>
<link>http://go.rss.sina.com.cn/redirect.php?url=http://news.sina.com.cn/w/p/2012-06-28/174824676055.shtml</link>
<author>WWW.SINA.COM.CN</author>
<guid>http://go.rss.sina.com.cn/redirect.php?url=http://news.sina.com.cn/w/p/2012-06-28/174824676055.shtml</guid>
<category>
<![CDATA[国际新闻-焦点新闻]]>
</category>
<pubDate>Thu, 28 Jun 2012 09:48:40 GMT</pubDate>
<comments></comments>
<description>
<![CDATA[  据英国《每日邮报》6月26日报道,厄瓜多尔境内有一种长着猴子脸的兰花,日前,欧洲的植物学家在厄瓜多尔巧遇猴面兰花,拍到了它们繁花盛开的样子。这种兰花之所以长着一张猴脸,是由花朵的不同部位形成的。比如,猴脸和猴嘴的图案是花朵最里面的唇瓣,颜色有深有浅,而三片像....]]>
</description>
</item>
<item>
<title>
<![CDATA[叙利亚反对派拒绝履行和平计划 除非阿萨德下台]]>
</title>
<link>http://go.rss.sina.com.cn/redirect.php?url=http://news.sina.com.cn/w/2012-06-28/173524676076.shtml</link>
<author>WWW.SINA.COM.CN</author>
<guid>http://go.rss.sina.com.cn/redirect.php?url=http://news.sina.com.cn/w/2012-06-28/173524676076.shtml</guid>
<category>
<![CDATA[国际新闻-焦点新闻]]>
</category>
<pubDate>Thu, 28 Jun 2012 09:35:00 GMT</pubDate>
<comments></comments>
<description>
<![CDATA[  CNTV消息 (网络新闻联播编译 邹娴 报道)据半岛电视台6月28日报道,叙利亚反对派当天发表声明称,将不会接受联合国特使科菲・安南提出的政府过渡计划,除非计划中明确要求总统巴沙尔・阿萨德下台。
         
           据联合国外交人士称,安南的提议旨在结束叙利亚长达16个月的冲突,尽管....]]>
</description>
</item>
</channel>
</rss>

 

具体的解析方式如下:

 

- (void)viewDidLoad {
    [super viewDidLoad];
    
	self.title = @"国际要闻";	
	self.rssList = [[NSMutableArray alloc] init];
	
	NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://rss.sina.com.cn/news/world/focus15.xml"]];
	parser.delegate = self;
	[parser parse];	
}

#pragma mark -
#pragma mark NSXMLParser delegate Methods

- (void)parserDidStartDocument:(NSXMLParser *)parser {
	NSLog(@"startParser");	
}

- (void)parserDidEndDocument:(NSXMLParser *)parser {
	[parser release];
	NSLog(@"%@", rssList);	
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
	if([elementName isEqualToString:@"item"]) {
		currentItem = [[NSMutableDictionary alloc] init];
	} else if (currentItem != NULL) {
		currentContents = [[NSMutableString alloc] init];
	}	
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
	if([elementName isEqualToString:@"item"]) {
		[rssList addObject:currentItem];
		[currentItem release];
	} else if (currentContents && currentItem) {
		[currentItem setObject:currentContents forKey:elementName];
		[currentContents release];
		currentContents = nil;		
	}	
}

- (void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock {
	if(currentItem && currentContents) {
		currentContents = [[NSMutableString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
	}
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
	if(currentItem && currentContents) {
		[currentContents appendString:string];		
	}	
}

你可能感兴趣的:(ios,rss,iPhone)