XMLのパースしなきゃいけなくて、libxmlで処理するのめんどくさいなー。ということで、CocoaPodを探った結果、RaptureXMLを試してみることにしました。
URLから直接XMLを取得するイニシャライザがついていて、とても簡単に利用することができました。
CocoaPodsを使わない場合は libz と libxml2 をリンクしてやるようにして、RXMLElement.hとRXMLElement.mをプロジェクトに追加するだけで使えます。
だいたい以下のように利用してます。
NSURL* url = [NSURL URLWithString:@"http://eiel.info/hoge.xml"];
RXMLElement* root = [RXMLElement elementFromURL:url];
NSMutableArray* schedule = [NSMutableArray array];
[root iterate:@"item" usingBlock: ^(RXMLElement *item) {
[schedule addObject:[[ALScheduleItem alloc] initWithRXMLElement:item]];
}];
i_schedule = [NSArray arrayWithArray:schedule];
RXMLElementオブジェクトを配列に格納しておいて利用しようとしたら、失敗したのでモデルオブジェクトを用意してやりました。
値を取り出すには
[element child:@"day"].text;
とやって取り出せます。DOMのインターフェイスになってますね。XPathも利用できるようです。 ソースコードも500行程度でコンパクトでした。