解析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, 分配一个新的(空)阵列每次listslists2,因此覆盖在这些变量是什么之前。

在启动parse方法之前,必须仅创建一次阵列。

+0

那么如何做到这一点,我真的不能找到解决方案? – user3195388

+0

@ user3195388:调用'lists = [[NSMutableArray alloc] init]; lists2 = ...;'就在调用NSXMLParser的'parse'方法之前,而不是在didStartElement中。 –