Я подозреваю, что это проблема пространств имен XML. В зависимости от используемой платформы и фактического полного XML, вам придется обращаться к элементам по их пространству имен. Возможно, вы захотите переключиться на другую платформу на основе DOM (без использования NSXMLParser
), например, GDataXMLNode от Google. В платформе на основе DOM вы можете получить доступ к отдельным узлам в древовидной структуре, вместо того чтобы создавать их самостоятельно.
В сети есть множество примеров, например, Создание программы чтения RSS или Как читать и писать документы XML с помощью 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];