如何在iPhone中解析本地存储的XML文件?

时间:2010-08-05 05:46:48

标签: iphone

如何在iPhone中解析本地存储的XML文件?

请使用代码段帮助我

2 个答案:

答案 0 :(得分: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);

     }

最好的运气。

答案 1 :(得分:0)

对不起,我现在不能给你任何片段,但是在我前一段时间做过的一个项目中,我们使用了touchXML库。

http://code.google.com/p/touchcode/wiki/TouchXML

有了这个,解析XML非常容易。

祝你好运!