2012-04-19 34 views
0

有没有一种方法,在可可,访问HTML文档的对象层次结构,通过一个UIWebView或以其他方式?例如,我要带一个HTML文件,然后拉出(<img>)所有图像的列表,所有链接(<a href>),等等,与其相关的属性(SRC =“”,HREF =“”,风格=” “... 等等)。访问文档层次与UIWebView的

其次,说我有一个HTML网页与没有与之关联的样式信息(普通老式<img src="">标签)的图像。在UIWebView中呈现页面之后,是否有可能确定任何继承的属性,甚至可能在屏幕上显示它的大小?

回答

1

看看stringByEvaluatingJavaScriptFromString:。您可以使用它来运行脚本来查找您感兴趣的标签,然后以字符串形式返回您感兴趣的数据。如果你想一次获取大量数据,那么在你传递数据的时候最好使用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的所有图像的你感兴趣的属性注意NSJSONSerialization确实需要的iOS 5或OS X 10.7,虽然有third-party libraries在那里,如果你需要。支持早期的操作系统版本。 (stringByEvaluatingJavaScriptFromString:追溯到到iOS 2.0和10.2.7。)

+0

哦真棒!哈哈让我的生活变得如此简单,谢谢! – Chris 2012-04-20 20:21:45