2012-04-19 32 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