我如何在 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 上并显示数据。