我有一个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。 谢谢!
答案 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代码。在这里,它存储为一个字符串,并准备好了。