2010-08-05 71 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); 

    } 

好運。

相關問題