2012-04-19 6 views
0

UIWebViewなどを使用して、HTMLドキュメントのオブジェクト階層にアクセスする方法はCocoaにありますか?たとえば、HTMLファイルを取得して、すべての画像(<img>)、すべてのリンク(<a href>)などの関連する属性(src = ""、href = ""、style = " "... 等々)。UIWebViewでドキュメント階層にアクセスする

第2に、それに関連付けられたスタイル情報のない画像(普通の古い<img src="">タグ)を持つHTMLページがあるとします。ページが上記の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を持っているthird-party librariesはあなたが必要な場合は、そこにありますがNSJSONSerializationは、iOSの5またはOS X 10.7を必要としないことに注意してください。以前のOSバージョンをサポートします。 (stringByEvaluatingJavaScriptFromString:はiOS 2.0と10.2.7に戻ります)

+0

ああ素晴らしいです!私のために人生をはるかに簡単にする母、ありがとう! – Chris