2011-09-08 69 views
0

我想开发一个非常简单的“公交时刻表”应用程序,它可以加载一个特定的URL,并且可以使用HTML来找出公交车号码,路线和预期时间。不幸的是,它是一个非常简单的网站,因此数据分布在TD和DIV字段中,而不是xml中。Objective-C:解析一个非xml网站

任何人都可以提供一些指导从哪里开始?我看了一下NSURL,NSURLConnection之类的东西,并且能够下载HTML文件的内容,但我不确定接下来要做什么。

非常感谢。

回答

0

很多方法来完成这项任务。最终,你会想要检索一个易于处理的格式,而不是原始 html。这里有一种方法:

我会建议编写一个服务器端脚本,将html转换为易于理解的格式,例如JSON。

如果你有PHP的经验,你可以编写一个脚本/网络服务,抓取所需的元素并将内容放入关联数组中。将脚本放置在服务器上,让您的应用程序在准备好检索信息时调用Web服务URL。

最后,将信息作为JSON对象返回并将JSON解析到您的应用程序中。

<?php 
    //parse html into the $array variable. 
    $array = json_encode($array); 
    echo $array; 
?> 

我会建议使用SBJSON库解析JSON对象:看看SBJSON

通过调用脚本URL启动您的NSURL要求。

NSURLRequest *request =[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.yoursite/script.php"]]; 

如果申请成功,解析生成的JSON:(假设使用SBJSON库)

-(void)connectionDidFinishLoading:(NSURLConnection *)connection { 
[connection release]; 

NSString *responseString = [[NSString alloc] initWithData: responseData encoding: NSUTF8StringEncoding]; 
[responseData release]; 

NSError *error; 
SBJSON *json = [[[SBJSON alloc] init]autorelease]; 
NSDictionary *busData = [json objectWithString:responseString error: &error]; 
//busData contains bus data that you formatted... 

当心,这是假设您想将数据添加到字典中,然后显示它适当。我认为这只是一个用你想要的方式格式化数据的片段。解析应用程序中的所有html可能很困难,这就是为什么我主张首先将数据格式化为JSON。如果您决定使用XML路线,那么也有几个XML解析器。