将xml的内容呈现给表视图

时间:2012-06-21 12:37:55

标签: iphone ios4

如何在UITableview上呈现XML内容。

样本结构:

    </node>
        <node name="abcd" id="id:1">
        <node name="abcde" id="id:1"/>
    </node>

表中的结构应表示如下 A B C D  ABCDE

2 个答案:

答案 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)