如何在UITableview上呈现XML内容。
样本结构:
</node>
<node name="abcd" id="id:1">
<node name="abcde" id="id:1"/>
</node>
表中的结构应表示如下 A B C D ABCDE
答案 0 :(得分:0)
首先,也许您应该使用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上并显示数据。
答案 1 :(得分:0)