我想開發一個非常簡單的「公交時刻表」應用程序,它可以加載一個特定的URL,並且可以使用HTML來找出公交車號碼,路線和預期時間。不幸的是,它是一個非常簡單的網站,因此數據分佈在TD和DIV字段中,而不是xml中。Objective-C:解析一個非xml網站
任何人都可以提供一些指導從哪裏開始?我看了一下NSURL,NSURLConnection之類的東西,並且能夠下載HTML文件的內容,但我不確定接下來要做什麼。
非常感謝。
我想開發一個非常簡單的「公交時刻表」應用程序,它可以加載一個特定的URL,並且可以使用HTML來找出公交車號碼,路線和預期時間。不幸的是,它是一個非常簡單的網站,因此數據分佈在TD和DIV字段中,而不是xml中。Objective-C:解析一個非xml網站
任何人都可以提供一些指導從哪裏開始?我看了一下NSURL,NSURLConnection之類的東西,並且能夠下載HTML文件的內容,但我不確定接下來要做什麼。
非常感謝。
有很多方法來完成這項任務。最終,你會想要檢索一個易於處理的格式,而不是原始 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解析器。