我试图使用NSXMLR解析Wordpress RSS提要中的数据。我的问题是导出分析过的数据。到目前为止,
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]){
currentTitle = [[NSMutableString alloc] init];
item = [[NSMutableDictionary alloc] init];
}
}这个类
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]){
[item setObject:currentTitle forKey:@"title"];
}
[stories addObject:item];
}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
if ([currentElement isEqualToString:@"title"]){
[currentTitle appendString:string];
}
}NSMutableArray *故事;NSMutableDictionary *项目;
所以在ViewDidLoad实现中,我有
//declare the object of allocated variable
NSData *xmlData=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:@"URL"]];// URL that given to parse.
//allocate memory for parser as well as
xmlParserObject =[[NSXMLParser alloc]initWithData:xmlData];
[xmlParserObject setDelegate:self];
//asking the xmlparser object to beggin with its parsing
[xmlParserObject parse];
NSLog(@"%@", [item objectForKey:@"title"]);我的问题是,我只打印一个对象,我有倍数元素。我怎样才能让它扫描其中的每一个,并打印它们全部。
提前谢谢。
发布于 2014-01-25 17:40:18
如果我正确理解您的代码,item保存当前解析的项,数组stories保存所有项。
因此,您必须首先分配stories数组:
stories = [[NSMutableArray alloc] init];然后执行解析(但应该添加错误检查):
NSData *xmlData=[[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:@"URL"]];
xmlParserObject =[[NSXMLParser alloc]initWithData:xmlData];
[xmlParserObject setDelegate:self];
if (![xmlParserObject parse]) {
// Parsing failed, report error...
}最后,打印数组的内容:
for (NSDictionary *story in stories) {
NSLog(@"%@", [story objectForKey:@"title"]);
}didEndElement方法可能应该如下所示:
- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
if ([elementName isEqualToString:@"item"]){
[item setObject:currentTitle forKey:@"title"];
[stories addObject:item]; // <-- MOVED INTO THE IF-BLOCK
}
}https://stackoverflow.com/questions/21353425
复制相似问题