2011-09-08 5 views
0

특정 URL을로드하고 HTML을 사용하여 버스 번호, 경로 및 예상 시간을 파악할 수있는 매우 간단한 "버스 시간표"앱을 개발하고 싶습니다. 불행히도 이것은 매우 간단한 웹 사이트이므로 데이터는 xml이 아닌 TD 및 DIV 필드에 분산됩니다.Objective-C : non-xml 웹 사이트 구문 분석

어디서부터 시작해야할까요? NSURL, NSURLConnection 등을 살펴보고 HTML 파일의 내용을 다운로드 할 수 있지만 다음에 수행 할 작업이 확실하지 않습니다.

감사합니다.

답변

0

이 작업을 수행하는 데 많은 방법이 있습니다. 궁극적으로 html이 아닌 쉽게 처리되는 형식을 검색하는 것이 좋습니다. 여기에 한 가지 방법이 있습니다 :

html을 JSON과 같이 쉽게 소화 가능한 형식으로 변환하는 서버 측 스크립트를 작성하는 것이 좋습니다.

php 경험이있는 경우 필요한 요소를 잡고 관련 배열에 배치하는 스크립트/웹 서비스를 작성합니다. 서버에 스크립트를 놓고 정보를 검색 할 준비가되면 응용 프로그램에서 웹 서비스 URL을 호출하게하십시오.

마지막으로 정보를 JSON 개체로 반환하고 JSON을 응용 프로그램으로 구문 분석합니다. 내가 JSON 개체를 구문 분석에 대한 SBJSON 라이브러리를 사용하는 것이 좋습니다

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

는 : 스크립트 URL을 호출하여 NSURL 요청을 시작

SBJSON를 살펴 보자.

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 파서도 있습니다.