UITableview に XML コンテンツを表示する方法を教えてください。
サンプル構造:
</node>
<node name="abcd" id="id:1">
<node name="abcde" id="id:1"/>
</node>
テーブル内の構造は、次のように表されます abcd abcde
手始めに、iPhone sdk 5.0を使用する必要があるかもしれません...そうは言っても、NSXMLParserオブジェクトを使用してXMLを解析する必要があります。
友達に説明しながら簡単なものを作り、あなたのコードで動作するように調整しました。ヘッダーは次のとおりです。
@interface MyParser : NSObject <NSXMLParserDelegate> {
NSMutableArray *nodeArray;
}
+(NSArray*)parseNodeData:(NSData*)data;
-(NSArray*)nodes;
-(void)parseWithData:(NSData*)data;
@end
そして実装:
@implementation MyParser
+(NSArray*)parseNodeData:(NSData*)data {
NSArray *ret;
MyParser *parser = [[MyParser alloc] init];
[parser parseWithData:data];
ret = [parser nodes];
[parser release];
return(ret);
}
-(NSArray*)nodes {
if (nodeArray == nil)
return(nil);
return([NSArray arrayWithArray:nodeArray]);
}
-(void)dealloc {
[nodeArray release];
[super dealloc];
}
-(void)parseWithData:(NSData*)data {
NSXMLParser parser = [[NSXMLParser alloc] initWithData:data];
[parser setDelegate:self];
[parser parse];
[parser release];
}
#pragma mark - NSXMLParserDelegate methods
-(void)parserDidStartDocument:(NSXMLParser*)parser {
if (nodeArray != nil)
[nodeArray release];
nodeArray = [[NSMutableArray alloc] init];
}
-(void)parser:(NSXMLParser*)parser didStartElement:(NSString*)elementName namespaceURI:(NSString*)namespaceURI qualifiedName:(NSString*)qName attributes:(NSDictionary*)attributeDict {
if ([elementName compare:@"node" options:NSCaseInsensitiveSearch] == NSOrderedSame) {
[nodeArray addObject[attributeDict valueForKey:@"name"]];
}
}
@end
そのコードを使用して(最適化できます-多くの場合)、XMLファイルの情報を取得してに保存しNSArray
、UITableViewに保存して、データを表示します。