9/12/2011

NSXMLParserの基本形

NSXMLParserのサブクラスを作成する。
ここでは
XMLParser.h
XMLParser.m
とする。

まずはXMLParser.h

#import <Foundation/Foundation.h>


@interface XMLParser : NSXMLParser <NSXMLParserDelegate> {
}
@end

次にXMLParser.m

#import "XMLParser.h"

@implementation XMLParser

#pragma mark -
#pragma mark Object lifecycle

- (id)initWithContentsOfURL:(NSURL *)url {
self = [super initWithContentsOfURL:url];
if (self) {
[self setDelegate:self];
}
return self;
}
- (id)initWithData:(NSData *)data {
self = [super initWithData:data];
if (self) {
[self setDelegate:self];
}
return self;
}

- (void) dealloc {
[super dealloc];
}


#pragma mark -
#pragma mark NSXMLParserDelegate Protocol

- (void)parserDidStartDocument:(NSXMLParser *)parser{
}
- (void)parserDidEndDocument:(NSXMLParser *)parser{
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName 
attributes:(NSDictionary *)attributeDict {
NSLog(@"<%@>",elementName);
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
NSLog(@"%@",string);
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
NSLog(@"</%@>",elementName);
}

@end

まずは対象となるXMLの要素をNSLogで出力して、どの要素が必要なのかを確認してから中身を実装していくとよい。
必要な要素に対応したクラスを作成して、それをNSMutableArrayに格納するとUITableViewなどで使い勝手が良い。

0 件のコメント:

コメントを投稿