我希望将我正在创建的nsdictionary传递到nsmutablearray中,但我不确定何时或如何在nsxmlparser委托中这样做。
这就是我到目前为止所做的
#pragma mark - Parsing lifecycle
- (void)startTheParsingProcess:(NSData *)parserData
{
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:parserData]; //parserData passed to NSXMLParser delegate which starts the parsing process
[parser setDelegate:self];
[parser parse]; // starts the event-driven parsing operation.
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
if ([elementName isEqualToString:@"item"]) {
valueDictionary = [[NSMutableDictionary alloc] init];
}
}
-(void)parser:(NSXMLParser *)parser foundCDATA:(NSData *)CDATABlock
{
NSMutableString *dicString = [[NSMutableString alloc] initWithData:CDATABlock encoding:NSUTF8StringEncoding];
currentElement = dicString;
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"title"]) {
titleString = currentElement;
[self.valueDictionary setObject:titleString forKey:@"title"];
NSLog(@"%@", [valueDictionary objectForKey:@"title"]);
NSLog(@" ");
currentElement = nil;
}
if ([elementName isEqualToString:@"description"])
{
descriptionString = currentElement;
[self.valueDictionary setObject:descriptionString forKey:@"description"];
NSLog(@"%@", [valueDictionary objectForKey:@"description"]);
NSLog(@" ");
currentElement = nil;
}发布于 2011-12-22 05:51:58
在-parser:didEndElement:namespaceURI:qualifiedName:中,侦听item元素的结尾,然后将valueDictionary添加到类的可变数组实例中。
if ([elementName isEqualToString:@"item"])
{
[self.mutableArrayOfDictionaries addObject:self.valueDictionary];
}
if ([elementName isEqualToString:@"title"]) {
titleString = currentElement;
[self.valueDictionary setObject:titleString forKey:@"title"];
NSLog(@"%@", [valueDictionary objectForKey:@"title"]);
NSLog(@" ");
currentElement = nil;
}
if ([elementName isEqualToString:@"description"])
{
descriptionString = currentElement;
[self.valueDictionary setObject:descriptionString forKey:@"description"];
NSLog(@"%@", [valueDictionary objectForKey:@"description"]);
NSLog(@" ");
currentElement = nil;
}https://stackoverflow.com/questions/8596824
复制相似问题