У меня другая проблема с obj-c: я пытаюсь разобрать этот XML:
вот случай:
<?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <soap:Body> <GetMyDashboardResponse xmlns="http://tempuri.org/"> <GetMyDashboardResult> <MyDashboard> <Profile>Speed Seeker</Profile> <UserID>6</UserID> <VenueName>Prasowa</VenueName> <FriendsCount>10</FriendsCount> <FollowingCount>11</FollowingCount> <FollowersCount>12</FollowersCount> <StatusMessage>aaa</StatusMessage> <StatusDate>2010-08-04T11:38:09.733</StatusDate> <CheckedInTimeStamp>2010-07-30T13:48:24</CheckedInTimeStamp> </MyDashboard> </GetMyDashboardResult> </GetMyDashboardResponse> </soap:Body> </soap:Envelope>
и вот как я пытаюсь это сделать:
NSMutableArray *res = [[NSMutableArray alloc] init]; CXMLDocument *doc = [[[CXMLDocument alloc] initWithData:XMLData options:0 error:nil] autorelease]; NSArray *nodes = NULL; nodes = [doc nodesForXPath:@"//MyDashboard" error:nil]; for (CXMLElement *node in nodes) { NSMutableDictionary *item = [[NSMutableDictionary alloc] init]; int counter; for(counter = 0; counter < [node childCount]; counter++) { [item setObject:[[node childAtIndex:counter] stringValue] forKey:[[node childAtIndex:counter] name]]; } [item setObject:[[node elementsForName:@"Profile"] stringValue] forKey:@"profileName"]; // <------ this magical arrow is pointing to the area of interest NSLog(@"petla"); [res addObject:item]; [item release]; } NSLog(@"%@", res); [res release];
`
спасибо за любую помощь.
[node elementsForName] вернет NSArray, поэтому вы определенно не можете использовать stringValue для этого. Создайте временную NSArray, установите elementsForName, проверьте, если количество объектов> 0, возьмите objectAtIndex:0 и все готово!
[node elementsForName]
NSArray
stringValue
elementsForName
objectAtIndex:0