解析xml到objective-c
问题描述:
我想解析一个xml文档到2个NSMutableArrays,但它好像是覆盖我的数组。我的xml文档包含3个对象,但我的数组只包含1个。为什么它会覆盖xml文档中以前添加的对象?解析xml到objective-c
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{
if ([elementName isEqualToString:@"playlist"]) {
title = [attributeDict valueForKey:@"title"];
listid = [[attributeDict valueForKey:@"id"] intValue];
lists = [[NSMutableArray alloc]init];
lists2 = [[NSMutableArray alloc]init];
[lists addObject:title];
[lists2 addObject:[NSString stringWithFormat:@"%d", listid]];
}
NSLog(@"%d", lists.count);
}
XML文档:
<?xml version="1.0"?>
<Lists>
<playlist title="Quo Vadis" id="0"/>
<playlist title="Lord of the Rings" id="1"/>
<playlist title="Face" id="2"/>
</Lists>
答
您在didStartElement
, 分配一个新的(空)阵列每次lists
和lists2
,因此覆盖在这些变量是什么之前。
在启动parse
方法之前,必须仅创建一次阵列。
那么如何做到这一点,我真的不能找到解决方案? – user3195388
@ user3195388:调用'lists = [[NSMutableArray alloc] init]; lists2 = ...;'就在调用NSXMLParser的'parse'方法之前,而不是在didStartElement中。 –