2011-09-08 49 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解析器。