在iPhone上解析Google自动填充XML
我试图让Google搜索自动填充在我的应用中工作,但我遇到了一些麻烦。我正在使用UISearchBar
,它的代理方法是textDidChange
。当文本的变化,我用NSXmlParser
阅读这样一个XML文件:在iPhone上解析Google自动填充XML
<toplevel>
<CompleteSuggestion>
<suggestion data="searchterms"/>
<num_queries int="13400000"/>
</CompleteSuggestion>
<CompleteSuggestion>
<suggestion data="searchterms twitter"/>
<num_queries int="52500000"/>
</CompleteSuggestion>
</toplevel>
http://suggestqueries.google.com/complete/search?client=toolbar&q=SEARCHTERM
凡SEARCHTERM将是文本的UISearchBar。这将返回一个XML文件,然后,我会分析发现使用
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
建议的词,但我不太清楚如何。
一般的想法是有一个searchSuggestions
可变数组属性。在parserDidStartDocument:
方法中,确保将它初始化为一个新的空数组 - 类似self.searchSuggestions = [NSMutableArray array];
。
然后,在您的didStartElement委托方法中,执行此操作以获取每个建议的项目。
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
if ([elementName isEqualToString:@"suggestion"]) {
NSString *suggestion = attributeDict[@"data"];
[self.searchSuggestions addObject:suggestion];
}
}
一旦你的parserDidEndDocument:
委托的回调,请务必做你需要做的,显示它 - 这取决于哪个对象是您的解析器委托。如果您的解析器的委托是一个表视图控制器,您可以重新加载表。如果它是某个请求对象,则可以调用请求的委托,执行完成块或发布通知。
美丽,非常感谢! – JohnWickham 2013-03-03 03:46:29