2010-08-05 90 views

回答

4

我已经使用NSXMLParser,我实现了它。我的资源中有r.xml文件。我只解析标题并使用NSXMLParser进行显示。

 r.xml: 

     <rss> 
     <eletitle > My Xml Program </eletitle> 
     </rss> 

这里我的示例代码,

@interface:

NSXMLParser *rssparser; 

    NSMutableArray *stories; 
    NSMutableDictionary *item; 
    NSMutableString *currrentTitle; 
    NSString *currentElement; 

@implementation:

-(void) viewDidAppear:(BOOL) animated 
    { 
      [self parseXMLFileAtURL]; 
    } 

    -(void) parseXMLFileAtURL 
    { 
     stories = [[NSMutableArray alloc] init]; 

     NSURL *xmlURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"r" ofType:@"xml"]]; 
     rssparser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL]; 
     [rssparser setDelegate:self]; 
     [rssparser setShouldProcessNamespaces:NO]; 
     [rssparser setShouldReportNamespacePrefixes:NO]; 
     [rssparser setShouldResolveExternalEntities:NO]; 
     [rssparser parse]; 

    } 

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 

    currentElement = [elementName copy]; 
    if([elementName isEqualToString:@"rss"]); 
    { 
     item = [[NSMutableDictionary alloc] init]; 
     currrentTitle = [[NSMutableString alloc] init]; 
    } 
} 


    -(void) parser:(NSXMLParser *)parser foundCharacters:(NSString *) string 
    { 
      if([currentElement isEqualToString:@"eletitle"]) 
      { 
       [currrentTitle appendString:string]; 
      } 
     } 

     - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 

     if([elementName isEqualToString:@"rss"]) 
     { 
      [item setObject:currrentTitle forKey:@"eletitle"]; 
      [stories addObject:[item copy]]; 
     } 
    } 

    - (void)parserDidEndDocument:(NSXMLParser *)parser 
    { 
       NSLog(@"The currrentTitle is %@",currrentTitle); 

    } 

好运。