このサイトの別の回答から導き出せることによるとDOMDocumentFromHTML:
、WebKit で要求されたような同期メソッドはありません。
これまでのところ、私ができる最善のことは、次のgiveDOMDocumentFromHTML:usingBaseURL:
との非同期の組み合わせです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:
元の質問で概説したように、同期実装を提供できる人は誰ですか?