SimpleHttpClient に HTML のフィルタを追加しました(HTML Document に対して XPath が使えます)

SimpleHttpClientKissXML+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 をご参照下さい。