前回で一応のサーバー側の準備ができたんで、今度はサーバーからのHTMLデータをiPhoneで受け取って解析する番っす。
でその(143)同様、libxml2ライブラリ使って解析するわけですが、今回はその(140)のように無理矢理UIWebViewをUITableViewCellに組み込んでみたり(まあ、なりゆきと、面白そうだからやったわけですが…)はせずに、素直にUIWebViewを表示するだけのiPhoneアプリ作って、解析はコンソール出力でやっていきます。コンソ?な人はコンソールを表示するを読みましょう。
まずはView-based Applicationプロジェクト作成。
今回は久々、単品作成なんで名前も場所も適当でOK。私はとりあえず
としました。
プロジェクトの作り方がわからん人はXcodeの手順(1)を読むべし。
プロジェクトが開いたらhtmlParserViewController.hをいじって
としてからhtmlParserViewController.xibをダブルクリックでインターフェースビルダー起動。
UIWebViewをドロップして
![$テン*シー*シー-1](https://stat.ameba.jp/user_images/20100530/10/xcc/b0/e2/j/o0277042810565815051.jpg?caw=800)
File's Ownerのconnectionにあるwebviewと繋ぎましょう。
IBOutlet 、File's Owner、connection?な人はその(160)を読めばよくってよ。
![$テン*シー*シー-2](https://stat.ameba.jp/user_images/20100530/10/xcc/99/aa/j/o0340046210565821831.jpg?caw=800)
で、これで準備完了なんでインターフェースビルダーはSaveして終了。XcodeでhtmlParserViewController.m開いてviewDidLoadを実装。とりあえず
をダイレクトに指定して読み込ませてみる。
やり方はwebviewインスタンスにloadRequestメッセージ送るだけっす。loadRequestメッセージのパラメータはNSURLRequestなんだけど、こいつはその(130)の応用。
![$テン*シー*シー-3](https://stat.ameba.jp/user_images/20100530/10/xcc/47/ef/j/o0243042910565843727.jpg?caw=800)
ばっちり出たザマス。
んじゃ、今度はその(130)とその(140)、その(142)を組み合わせてサーバから送られてくる素のHTMLテキストをコンソールに表示した上でwebviewにも表示するように変更。
うりゃあ。
![$テン*シー*シー-4](https://stat.ameba.jp/user_images/20100530/10/xcc/c7/ea/j/o0399054610565863633.jpg?caw=800)
バッチリ!
あとはその(143)~その(149)まででやったようにサーバからのHTMLテキストの解析と写真、テキストの送信機能を、こいつでこの花は?サーバー用に実装実験していけばいいわけっす。
いよいよフィニッシュが近づいてきた。
長かった…
------------
サンプルプロジェクト:htmlParser.zip
でその(143)同様、libxml2ライブラリ使って解析するわけですが、今回はその(140)のように無理矢理UIWebViewをUITableViewCellに組み込んでみたり(まあ、なりゆきと、面白そうだからやったわけですが…)はせずに、素直にUIWebViewを表示するだけのiPhoneアプリ作って、解析はコンソール出力でやっていきます。コンソ?な人はコンソールを表示するを読みましょう。
まずはView-based Applicationプロジェクト作成。
今回は久々、単品作成なんで名前も場所も適当でOK。私はとりあえず
htmlParser
としました。
プロジェクトの作り方がわからん人はXcodeの手順(1)を読むべし。
プロジェクトが開いたらhtmlParserViewController.hをいじって
@interface htmlParserViewController : UIViewController {
IBOutlet UIWebView* webview;
}
@end
IBOutlet UIWebView* webview;
}
@end
としてからhtmlParserViewController.xibをダブルクリックでインターフェースビルダー起動。
UIWebViewをドロップして
![$テン*シー*シー-1](https://stat.ameba.jp/user_images/20100530/10/xcc/b0/e2/j/o0277042810565815051.jpg?caw=800)
File's Ownerのconnectionにあるwebviewと繋ぎましょう。
IBOutlet 、File's Owner、connection?な人はその(160)を読めばよくってよ。
![$テン*シー*シー-2](https://stat.ameba.jp/user_images/20100530/10/xcc/99/aa/j/o0340046210565821831.jpg?caw=800)
で、これで準備完了なんでインターフェースビルダーはSaveして終了。XcodeでhtmlParserViewController.m開いてviewDidLoadを実装。とりあえず
http://localhost/konohana/mainlist.php
をダイレクトに指定して読み込ませてみる。
- (void)viewDidLoad {
[super viewDidLoad];
NSURLRequest* request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://localhost/konohana/mainlist.php"]]
[webview loadRequest:request];
}
[super viewDidLoad];
NSURLRequest* request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://localhost/konohana/mainlist.php"]]
[webview loadRequest:request];
}
やり方はwebviewインスタンスにloadRequestメッセージ送るだけっす。loadRequestメッセージのパラメータはNSURLRequestなんだけど、こいつはその(130)の応用。
![$テン*シー*シー-3](https://stat.ameba.jp/user_images/20100530/10/xcc/47/ef/j/o0243042910565843727.jpg?caw=800)
ばっちり出たザマス。
んじゃ、今度はその(130)とその(140)、その(142)を組み合わせてサーバから送られてくる素のHTMLテキストをコンソールに表示した上でwebviewにも表示するように変更。
- (void)connection:(NSURLConnection*)connection
didReceiveData:(NSData*)data
{
char* p = (char*)[data bytes];
int len = [data length];
while (len-- > 0) {
putchar(*p++);
}
// webviewへの表示
NSString* htmlstring = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
[webview loadHTMLString:htmlstring
baseURL:[NSURL URLWithString:@"http://localhost/konohana/mainlist.php"]];
[htmlstring release];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
NSURLRequest* request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://localhost/konohana/mainlist.php"]];
[NSURLConnection connectionWithRequest:request delegate:self];
}
didReceiveData:(NSData*)data
{
char* p = (char*)[data bytes];
int len = [data length];
while (len-- > 0) {
putchar(*p++);
}
// webviewへの表示
NSString* htmlstring = [[NSString alloc] initWithData:data
encoding:NSUTF8StringEncoding];
[webview loadHTMLString:htmlstring
baseURL:[NSURL URLWithString:@"http://localhost/konohana/mainlist.php"]];
[htmlstring release];
}
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
NSURLRequest* request = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://localhost/konohana/mainlist.php"]];
[NSURLConnection connectionWithRequest:request delegate:self];
}
うりゃあ。
![$テン*シー*シー-4](https://stat.ameba.jp/user_images/20100530/10/xcc/c7/ea/j/o0399054610565863633.jpg?caw=800)
バッチリ!
あとはその(143)~その(149)まででやったようにサーバからのHTMLテキストの解析と写真、テキストの送信機能を、こいつでこの花は?サーバー用に実装実験していけばいいわけっす。
いよいよフィニッシュが近づいてきた。
長かった…
------------
サンプルプロジェクト:htmlParser.zip