我正在开发一个 iOS 应用程序,它使用 NSURL 来使用来自网站的 XML 数据:http: //undignified.podbean.com/feed。从那里我使用 NSXMLParser 解析 XML 并在“enclosure”元素中搜索一个名为“url”的属性。然后将所有匹配“url”的属性添加到标记为 _links 的可变数组中。问题是每次找到“url”属性并将其添加到数组中时,它都会将其添加到上一个条目中,并在数组中创建一个大对象。如果我 NSLog 退出数组 _links,则会显示以下内容:
(
(
"http://undignified.podbean.com/mf/feed/hm8a2d/UndignifiedBonusShow.mp3",
"http://undignified.podbean.com/mf/feed/cfdayc/UndignifiedShow03.mp3",
"http://undignified.podbean.com/mf/feed/wbbpjw/UndignifiedShow02Final.mp3",
"http://undignified.podbean.com/mf/feed/ih2x8r/UndignifiedShow01.mp3",
"http://undignified.podbean.com/mf/feed/t4x54d/UndignifiedShow00.mp3"
)
)
我正在为数组使用 addObject 并尝试了 insertObject,但都没有奏效。我的代码在下面列出。我知道在将对象加载到数组中的其他实例中,我必须实现一个 for 循环,但不确定此处是否有必要,因为解析器方法似乎会自行循环遍历整个 XML 文档。我敢肯定,这是我缺少的一些小东西,我们将不胜感激朝正确方向轻推。
UnDigParser.H - 听文件解析:
@interface UnDigParser : NSXMLParser <NSXMLParserDelegate> {
}
@property (retain) NSMutableArray *links;
@end
UnDigParser.M - 解析的实现文件:
@implementation UnDigParser
NSMutableArray *_links;
@synthesize links = _links;
-(void)parserDidStartDocument:(NSXMLParser *)parser{
_links=[[NSMutableArray alloc] init];
}
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
if ([elementName isEqualToString:@"enclosure"]){
NSString *link = [attributeDict objectForKey:@"url"];
if (link){
[_links addObject:link];
}
}
NSLog(@"%@",_links);
}
-(BOOL)parse{
self.delegate = self;
return [super parse];
}
@end