Parsing XML data to NSMutableArray iOS - iPhone

喜欢而已 提交于 2019-11-29 07:48:17

Hey You can use XMLReader but it will return NSDictionary.

The Following code demo for XMLReader to get NSDictionary.

import XMLReader in your file.

#import "XMLReader.h"

Then use following method to get NSDictionary. Where you have to pass your XML as NSString .

NSDictionary* xmlDict = [XMLReader dictionaryForXMLString:theXML error:&er];

If you want to use GDataXMLParser you can use following code that is working fine

First Impost GDataXMLParser library file then write vbe

 -(void)XMLParsing
 {

      GdataParser *parser = [[GdataParser alloc] init];

      NSString* urlString = @"YOURURL"; 

      NSURL *url = [[NSURL alloc] initWithString:urlString];

      [parser downloadAndParse:url withRootTag:@"Category" withTags:[NSDictionary dictionaryWithObjectsAndKeys:@"categoryId",@"categoryId",@"categoryName",@"categoryName",@"categoryDescription",@"categoryDescription",@"categoryIconPath",@"categoryIconPath",@"userId",@"userId",@"categoryStatus",@"categoryStatus",@"publicPrivate",@"publicPrivate",nil] 
                         sel:@selector(finishGetDataSF:) 
                  andHandler:self];
      [urlSR release];
      [parser release];
  } 


  -(void)getDate:(NSDictionary*)dict
  {
      NSLog(@"Data from XML file  ==  %@",dict);

      NSArray* arrayTemp = [dict copy];
  }

here i have parsing of you r Application its working very fine pls check it make a category object orientation class and use it.

 -(void)loaddatafromxml
  {
    NSString *ur=[NSString stringWithFormat:@"Enter your url"]; 

     NSURL *url=[NSURL URLWithString:ur];
     NSMutableURLRequest *req=[NSMutableURLRequest requestWithURL:url];
     conn=[[NSURLConnection alloc]initWithRequest:req delegate:self];
     if(conn)
     webdata=[[NSMutableData data]retain];
  }

 -(void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
 {
[webdata appendData:data];
  }
 -(void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
  {
[webdata setLength:0];  
   }

-(void)connectionDidFinishLoading:(NSURLConnection *)connection
{
categaryArry=[[NSMutableArray alloc]init];


  NSString *thexml=[[NSString alloc] initWithBytes:[webdata mutableBytes] length:[webdata length] encoding:NSASCIIStringEncoding];

  NSArray *arr=[thexml componentsSeparatedByString:@"<Category>"];


for(int i=1;i<[arr count];i++)
{
    categList *object = [[categList alloc] init];
    NSString *str=[arr objectAtIndex:i];


    NSArray *arr=[str componentsSeparatedByString:@"<categoryId>"];
    NSString *data=[arr objectAtIndex:1];
    NSRange ranfrom=[data rangeOfString:@"</categoryId>"];
    object.catid=[data substringToIndex:ranfrom.location];





    arr=[str componentsSeparatedByString:@"<categoryName>"];
    data=[arr objectAtIndex:1];
    ranfrom=[data rangeOfString:@"</categoryName>"];
   object.catname=[data substringToIndex:ranfrom.location];



    arr=[str componentsSeparatedByString:@"<categoryDescription>"];
    data=[arr objectAtIndex:1];
    ranfrom=[data rangeOfString:@"</categoryDescription>"];
   object.catdesc=[data substringToIndex:ranfrom.location];






    arr=[str componentsSeparatedByString:@"<categoryIconPath>"];
    data=[arr objectAtIndex:1];
    ranfrom=[data rangeOfString:@"</categoryIconPath>"];
    object.caticon=[data substringToIndex:ranfrom.location];





    arr=[str componentsSeparatedByString:@"<userId>"];
    data=[arr objectAtIndex:1];
    ranfrom=[data rangeOfString:@"</userId>"];
    object.userid=[data substringToIndex:ranfrom.location];





    arr=[str componentsSeparatedByString:@"<categoryStatus>"];
    data=[arr objectAtIndex:1];
    ranfrom=[data rangeOfString:@"</categoryStatus>"];
    object.catstatus=[data substringToIndex:ranfrom.location];





    arr=[str componentsSeparatedByString:@"<publicPrivate>"];
    data=[arr objectAtIndex:1];
    ranfrom=[data rangeOfString:@"</publicPrivate>"];
    object.publicpriv=[data substringToIndex:ranfrom.location];


    [categaryArry addObject:object];
}   

[self.table_data reloadData];

[thexml release];

[connection release];

 }

and call the loaddatafrm xml function as [self loaddatafromxml]; its working nice try it .

Thanks

You use if ( [elementName isEqualToString:@"categList"])... but I can't find categList name in you XML sample. Check please - this can be an issue.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!