从UIWebView中提取文本

时间:2012-06-07 01:01:28

标签: javascript objective-c ios uiwebview

我有一个UIWebView加载了一个简单的rtf文件。 (包含一行“这是测试”)

UIWebView* webview = [[UIWebView alloc] initWithFrame:CGRectMake(5, 50, 310, 400)];
[[self view] addSubview:webview];
[webview loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"rtf"]isDirectory:NO]]];
NSString *html = [webview stringByEvaluatingJavaScriptFromString: @"all"];
NSLog (@"html:%@", html.debugDescription);

“这是一个文本”行正确显示在UIWebView中。 有谁知道是否有可能将该行文本(或更多)提取到NSString或其他一些可访问的容器中?

我知道有:

NSString *html = [webview stringByEvaluatingJavaScriptFromString: @"document.documentElement.outerHTML"];

但是(显然)在这里不起作用。有任何想法吗 ?我基本上试图(假)将rtf文件转换为iOS上的NSString。 谢谢!

3 个答案:

答案 0 :(得分:4)

不是从UIWebView获取html,而是再次应用将html转换为纯文本的额外工作,我们可以直接使用下面的代码从UIWebView获取文本内容:

NSString *plainText = [webView stringByEvaluatingJavaScriptFromString:@"document.body.textContent"];

它可以节省您将html转换为纯文本的额外工作。

答案 1 :(得分:3)

事实证明document.documentElement.innerText是要走的路。马上给我一个纯文本。谢谢奥马尔!

答案 2 :(得分:1)

过去我实际上不得不做类似的事情。也许不是最优雅的,但这对我有用:

我会将文件中的文本加载到HTML页面中(您可以使用UIWebView中的javascript执行此操作,或者您可以从Objective-C创建一个javascript方法来使用stringByEvaluatingJavaScriptFromString进行调用)。然后你可以运行上面概述的方法调用,它应该可以正常工作,或者你可以在Javascript中创建一个自定义方法来捕获并将文本返回到Objective-C代码。在这里,它存储为一个字符串,并准备好了。