根据我可以从该站点上的另一个答案DOMDocumentFromHTML:
中得出的信息,WebKit中没有我请求的同步方法。
到目前为止,我能做的最好的事情就是下面的giveDOMDocumentFromHTML:usingBaseURL:
and的异步组合takeDOMDocument:
。
- (void) giveDOMDocumentFromHTML: (NSString *) htmlString
usingBaseURL: (NSURL *) baseURL
{
WebView * webView = [[WebView alloc] init];
[webView setFrameLoadDelegate: self];
[[webView mainFrame] loadHTMLString: htmlString
baseURL: baseURL];
}
- (void) takeDOMDocument: (DOMDocument *) document
{
DOMHTMLElement * bodyNode =
(DOMHTMLElement *) [[document getElementsByTagName: @"body"] item: 0];
NSLog(@"Body is: %@", [bodyNode innerHTML]);
}
它们通过以下委托方法连接在一起:
- (void) webView: (WebView *) webView
didFinishLoadForFrame: (WebFrame *) frame
{
if (frame == [webView mainFrame]) {
[self takeDOMDocument: [frame DOMDocument]];
}
}
上述工作,但至少有以下剩余问题:
- 我不确定应将分配的 WebView 发送到何处
release
或autorelease
消息。
- 在处理 HTML 页面之前,我希望/需要应用程序保持阻塞状态。在上述方案中,应用程序将在 WebView 加载/解析 HTML 时处理任何用户输入。(请注意,WebView 永远不会显示在屏幕上。)
所以这仍然有待改进。谁能提供DOMDocumentFromHTML:
原始问题中概述的同步实现?