从UIWebView中提取文本

extract text from UIWebView

本文关键字:取文本 提取 UIWebView      更新时间:2023-09-26

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

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。谢谢!

事实证明document.documentElement.innerText是要走的路。立即给我纯文本。

与其从UIWebView获取html,并再次付出额外的努力将html转换为纯文本,我们可以直接使用以下代码从UIWebView获取文本内容:

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

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

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

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