2012-04-19 2 views
0

UIWebView 또는 다른 방법을 통해 HTML 문서의 개체 계층 구조에 액세스하는 방법이 Cocoa에 있습니까? 예를 들어, HTML 파일을 가져 와서 연관된 모든 속성 (src = "", href = "", style = "")을 사용하여 모든 이미지 (<img>), 모든 링크 (<a href>) "... 등등).UIWebView를 사용하여 문서 계층에 액세스하기

두 번째로, 스타일 정보가없는 이미지가 포함 된 html 페이지가 있다고 가정합니다 (일반 이전 <img src=""> 태그). UIWebView에서 페이지를 렌더링 한 후에 상속 된 속성을 결정할 수 있습니까? 화면에 표시되는 크기까지도 가능합니까?

답변

1

stringByEvaluatingJavaScriptFromString:을 살펴보십시오. 이 태그를 사용하여 관심있는 태그를 찾은 스크립트를 실행 한 다음 관심있는 데이터를 문자열로 반환 할 수 있습니다. 많은 양의 데이터를 한꺼번에 가져오고 싶다면 JSON을 전달하는 동안 JSON을 사용하는 것이 가장 쉽습니다. 예 :

NSString *jsonString = [webView stringByEvaluatingJavaScriptFromString:@"var result = {}; var imgs = document.getElementsByTagName('img'); for (x = 0; x < imgs.length; x++) { result[x] = {'src': imgs[x].src, 'width': imgs[x].offsetWidth, 'height': imgs[x].offsetHeight}; } result = JSON.stringify(result);"]; 
NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; 
NSError *error = nil; 
NSArray *imgArray = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error]; 

그래서, 지금 당신은 모든 이미지를 가진 NSArray 당신이에 관심이 특성을 갖는에서 iOS 5 또는 OS X 10.7을 필요로 않습니다 NSJSONSerialization합니다, 거기에 당신이 필요로하는 경우 third-party libraries을 있기는하지만. 이전 OS 버전을 지원합니다. (stringByEvaluatingJavaScriptFromString:은 iOS 2.0 및 10.2.7로 돌아갑니다.)

+0

아 정말 끝내줍니다! 하하는 삶이 훨씬 쉬워졌습니다. 감사합니다! – Chris

관련 문제