0

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

次に、スタイル情報が関連付けられていない画像(プレーンな古い<img src="">タグ)を含むhtmlページがあるとします。上記のUIWebViewでページがレンダリングされた後、継承されたプロパティ、さらには画面に表示されるページのサイズを決定することは可能ですか?

4

1 に答える 1

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すべての画像と関心のある属性ができました。以前のOSバージョンをサポートする必要がある場合は、サードパーティのライブラリNSJSONSerializationがありますが、iOS5またはOSX10.7が必要です。(iOS 2.0および10.2.7に戻ります。)stringByEvaluatingJavaScriptFromString:

于 2012-04-20T03:48:55.427 に答える