NSXMLParser 如何将 NSMutableDictionary 传递给 NSMutableArray
我想将我创建的 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;
}
I would like to pass the nsdictionary I am creating into an nsmutablearray but I'm not sure when or how to do it in the nsxmlparser delegates.
this is what I have done so far
#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;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在
-parser:didEndElement:namespaceURI:qualifiedName:
中,监听item
元素的结尾,然后将valueDictionary
添加到可变数组实例你的班级。In
-parser:didEndElement:namespaceURI:qualifiedName:
, listen for the end of theitem
element, then addvalueDictionary
to a mutable array instance on your class.