我正在创建一个显示来自特定 Web 服务的最新提要的应用程序,为此我使用 NSXMLParserDelegate 协议,我阅读了苹果文档,我也尝试了一些教程,但某处似乎出了问题,我不明白如何didEndElement,foundCharacters 工作吗,无论如何我想显示帖子的图像,标题和内容,发布日期,我是 xmlparsing 的新手,这是我的viewcontroller.h(我刚刚解析了以下代码中的标题元素)
@property(nonatomic,strong)NSString *currentElement;
@property(nonatomic,strong)NSString *currentTitle;
@property(nonatomic,strong)NSMutableArray *titles;
查看didload
NSURL *url=[NSURL URLWithString:@"http://www.forbes.com/fast/feed"];
NSXMLParser *parser=[[NSXMLParser alloc]initWithContentsOfURL:url];
[parser setDelegate:self];
[parser parse];
NSLog(@"%d",titles.count);
开始元素
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
self.currentElement=elementName;
if ([self.currentElement isEqualToString:@"title"])
{
self.currentTitle=[NSMutableString alloc];
titles=[[NSMutableArray alloc]init];
titles=[attributeDict objectForKey:@"title"];
}
}
发现字符
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
self.currentElement=elementName;
if ([self.currentElement isEqualToString:@"title"])
{
self.currentTitle=[NSMutableString alloc];
titles=[[NSMutableArray alloc]init];
titles=[attributeDict objectForKey:@"title"];
}
}
didEnd 元素
-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([self.currentElement isEqualToString:@"title"])
{
NSLog(@"%@",self.currentTitle);
}
}
疑虑
1)我应该在哪里声明我的标题数组,以便我可以向其中添加单独的标题对象。didStartElement 中的 [attributeDict objectForKey] 有什么用?它为我的程序返回 null
2)foundCharacters 委托实际上做了什么?它附加了什么?
3)在 didEndElement 之后,为什么编译器没有达到 didStartElement 而不是 foundCharacters ?
4)最后我应该实际使用 NSXMLParserDelegate 协议进行 xml 解析,其他像 touchXML、TBXML 和 raywenderlich 中提供的其他协议会有所不同吗?
我很抱歉发了这么长的帖子,但是关于我的查询,我在网上没有得到任何令人满意的答案,我使用了所有的断点并弄清楚了代表是如何来回调用的,我需要一些有启发性的答案来回答我的查询,谢谢和抱歉