SimpleHttpClient に HTML のフィルタを追加しました(HTML Document に対して XPath が使えます)
SimpleHttpClient に KissXML+HTML を組み込んで HTML フィルタを作成しました。
下記のように、SimpleHttpClient のオブジェクトを作成し・・・
SimpleHttpClient *client = [[SimpleHttpClient alloc] initWithDelegate:self];
HTML 用のフィルタを設定し・・・
[client
setFilter:SimpleHttpClientFilterHTML
forHost:@"d.hatena.ne.jp"
];
リクエストを送ると・・・
[client get:@"http://d.hatena.ne.jp/cooldaemon/20090911/1252637257" parameters:nil context:nil ];
DDXMLDocument のオブジェクトが受け取れます。
- (void)simpleHttpClientOperationDidFinishLoading:(SimpleHttpClientOperation *)operation filteredData:(id)data { [_html release]; _html = (DDXMLDocument *)[data retain]; }
XPath を使うには、下記のようにします。
NSError *error = nil; NSArray *body = [_html nodesForXPath:@"id(\"days\")//div[@class=\"body\"]//h3/following-sibling::*|id(\"days\")//div[@class=\"body\" and not(.//h3)]" error:&error ]; NSLog("%@", [body componentsJoinedByString:@""]);
詳しくは、test/TestHatenaDiaryHTML.m をご参照下さい。