d'après ce que je peux tirer de another answer on this site, il n'y a pas de méthode synchrone telle que ma demande DOMDocumentFromHTML:
disponible dans WebKit.
jusqu'à présent, le meilleur que je suis en mesure de faire est la combinaison asynchrone suivante de giveDOMDocumentFromHTML:usingBaseURL:
et 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]);
}
Ils sont accrochés ensemble par la méthode déléguée suivante:
- (void) webView: (WebView *) webView
didFinishLoadForFrame: (WebFrame *) frame
{
if (frame == [webView mainFrame]) {
[self takeDOMDocument: [frame DOMDocument]];
}
}
Les travaux ci-dessus, mais il a au moins les questions en suspens suivantes:
- Je ne sais pas où le WebView alloué doit recevoir un message
release
ou .
- Je préférerais que l'application reste bloquée jusqu'à ce que la page HTML ait été traitée. Dans le schéma ci-dessus, l'application traitera toute entrée utilisateur pendant que WebView charge/analyse le code HTML. (Notez que le WebView ne s'affichera jamais à l'écran.)
Il est donc encore beaucoup à améliorer. Toute personne pouvant fournir une implémentation synchrone pour DOMDocumentFromHTML:
comme indiqué dans la question d'origine?
Si vos questions précédentes sont résolues, utilisez la coche pour accepter la réponse la plus utile. N'oubliez pas de voter sur des réponses utiles. Lisez la FAQ pour plus de détails. –
N'avait pas réalisé que je devrais choisir une réponse "le résout"; Merci d'avoir fait remarquer cela! – Rinzwind