我怀疑这是 XML 命名空间的问题。根据使用的框架和实际的完整 XML,您必须通过它们的名称空间访问元素。您可能想要切换到另一个基于 DOM 的框架(不使用NSXMLParser
),例如Google 的GDataXMLNode。在基于 DOM 的框架中,您可以访问树状结构中的各个节点,而不是自己构建一个。
网上有很多这方面的例子,例如Building an RSS reader或How to read and write XML documents with GDataXML。但举一个简单的例子,这看起来如何:
NSError *error = nil;
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];
if (doc == nil) { return nil; }
NSMutableDictionary *result = [[NSMutableDictionary alloc] init];
NSArray *lists = [doc nodesForXPath:@"/result/list" error:nil];
if ([lists count] > 0)
{
for (GDataXMLNode *list in lists) {
int listid = [self integerInNode:list forXPath:@"listid"];
NSString *listname = [self stringInNode:list forXPath:@"name"];
[result setValue:[NSNumber numberWithInt:listid] forKey:listname];
}
}
[doc release];
return [result autorelease];