gpt4 book ai didi

objective-c - NSXMLParser 仅从提要中获取最后一个对象

转载 作者:行者123 更新时间:2023-12-03 17:39:54 29 4
gpt4 key购买 nike

我对 Objective C 和 Stack Overflow 很陌生。我正在尝试解析在线 XML 文档。该提要有 5 个条目,每个条目如下所示:

<item>
<title>the title goes here</title>
<link>http://thelink.com</link>
<guid>http://thelink.com</guid>
<category>News</category>
<description/>
<pubDate>Wed, 20 Nov 2013 20:36:00 +0430</pubDate>
<author>newsFeedAsc</author>
</item>

顶级节点是:

<rss version="2.0">
<channel>
<title>feed RSS</title>
<link>Feedlink.com</link>
<description>...</description>
<language>fa-ir</language>
<pubDate/>
<lastBuildDate/>
<docs>......</docs>
<generator>.....</generator>
<ttl>5</ttl>
<image>
<title>RSS</title>
<url>
......images/ver2/rsslogo.gif
</url>
<link>.......</link>
</image>

我使用以下代码:

- (void)viewDidLoad
{
[super viewDidLoad];
NSString *urlString=@"http://thelink.thelink/api/news?news_type=2&limit=5";
NSURL *url = [NSURL URLWithString:urlString];
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser setShouldResolveExternalEntities:NO];
[parser parse];
}

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

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([element isEqualToString:@"title"]) {
[title appendString:string];
} else if ([element isEqualToString:@"link"]) {
[link appendString:string];
}
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"item"]) {
[item setObject:title forKey:@"title"];
[item setObject:link forKey:@"link"];
[feeds addObject:[item copy]];
}
}
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
NSLog(@"%@",feeds);
}

现在,当我 NSLog“提要”时,我得到一个空对象。当我 NSLog“item” 时,我得到了 feed 的最后一个条目。如果我没记错的话,整个 XML 树应该位于“feeds”中。

最佳答案

您似乎从未创建实例并将其分配给 feeds,因此它不存在,无法添加任何内容。因此,当您尝试添加每个item时,您实际上只是将其丢弃(有效,并且仅当您为下一个item创建新实例时)。这就是为什么你只有最后一项。

因此,基本上,请务必创建 feeds 数组,以便有地方存储结果。

关于objective-c - NSXMLParser 仅从提要中获取最后一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20684204/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com