过滤来自mediawiki api ios的数据

我使用“action = query&prop = revisions&rvprop = content&titles =%@&format = json&redirects”api来获取有关Anil_Ambani的详细信息。 作为回应,我收到了下面的字典

<i> query = { normalized = ( { from = "Anil_Ambani"; to = "Anil Ambani"; } ); pages = { 1222313 = { ns = 0; pageid = 1222313; revisions = ( { "*" = "{{BLP sources|date=June 2012}}\n{{Infobox person\n| name = Anil Ambani \n| image =AnilAmbani.jpg\n| image_size = \n| caption = Ambani in 2009\n| birth_date = {{Birth date and age|1959|6|4|df=y}}\n| birth_place = [[Mumbai]], [[Maharashtra]], [[India]]\n| nationality = Indian\n| occupation = Chairman of [[Anil Dhirubhai Ambani Group]] \n| networth = {{loss}} [[United States dollar|$]]5.2 billion (2012)<ref name=\"forbes.com\">[http://www.forbes.com/profile/anil-ambani/.] Forbes.com. Retrieved April 2013.</ref> \n| residence = Mumbai, Maharashtra, India\n| alma_mater = [[Warwick Business School]]<br />[[Wharton School of the University of Pennsylvania|The Wharton School]]\n| parents = [[Dhirubhai Ambani]]<br>Kokilaben Ambani\n| brother = [[Mukesh Ambani]]\n| spouse = [[Tina Ambani]]\n| 

这里的的值是一个NSString 的值

 <i>$3 = 0x0755bb50 {{BLP sources|date=June 2012}} {{Infobox person | name = Anil Ambani | image =AnilAmbani.jpg | image_size = | caption = Ambani in 2009 | birth_date = {{Birth date and age|1959|6|4|df=y}} | birth_place = [[Mumbai]], [[Maharashtra]], [[India]] | nationality = Indian</i> 

现在我想筛选string来获取名称,birth_date等我试过

 <i>NSArray *arr=[htmlSrc componentsSeparatedByString:@"|"] for (int i=2; i<mutArr.count; i++) { NSArray *DictKeyValueArray=[str componentsSeparatedByString:@"="]; [mainDict setObject:[DictKeyValueArray objectAtIndex:1] forKey:[DictKeyValueArray objectAtIndex:0]]; } 

但它在birth_date后崩溃了。 因为有“|” 出生date和年龄。 所以在birth_date后我不会得到任何关键值对。

请build议我一些其他的方式来过滤string。

你得到的答复是字典forms。 然后,您将获取基本上是string的键“*”的值。 但是,该string包含HTML值 。 这个HTML主要是在我们的应用程序的UIWebView中显示内容。

现在,为了您的问题,以获得特定的关键的价值,即名称,birth_date等:
我们得到的HTMLstring是不确定的,因为它会随着你改变input单词(被search的单词)而改变,在这里,input单词是Anil Ambani,但它可以是任何东西,所以响应和HTML值。
所以,我不认为会有什么明确的方法来获得特定关键的价值。

更新:-
为了得到两个子串之间的子串,你可以使用这个:

 -(NSString*)useScannerToGetSubstring:(NSString*)strYourString StartString:(NSString*)startString EndString:(NSString*)endString { NSString * strTest = strYourString; NSMutableArray *substrings = [NSMutableArray new]; NSScanner *scanner = [NSScanner scannerWithString:strTest]; [scanner scanUpToString:startString intoString:nil]; while(![scanner isAtEnd]) { NSString *substring = nil; [scanner scanString:startString intoString:nil]; if([scanner scanUpToString:endString intoString:&substring]) { [substrings addObject:substring]; } [scanner scanUpToString:startString intoString:nil]; } if ([substrings count]>0) { return [substrings objectAtIndex:0]; } return nil; }