2013-10-10 35 views
0

我的XML格式是这样创建磁盘阵列:从XML文件

<Rows> 
    <Row> 
    <style>String</style? 
    <thumbnail>String</thumbnail> 
    </Row> 
    <Row> 
    <style>String</style? 
    <thumbnail>String</thumbnail> 
    </Row> 
</Rows> 

如何创建一个NSMutableArray这样的({风格=“值”;缩略图=“值”;} ... ..)

这里是我的代码:

-(void) parser:(NSXMLParser *) parser didStartElement:(NSString *) elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 
    if ([elementName isEqualToString:@"style"]) { 
     element = [NSString stringWithString:elementName]; 
     if (!soapResults) { 
      soapResults = [[NSMutableString alloc] init]; 
     } 
     elementFound = YES; 
    } 
    if ([elementName isEqualToString:@"thumbnail1"]) { 
     element = [NSString stringWithString:elementName]; 
     if (!soapResults) { 
      soapResults = [[NSMutableString alloc] init]; 
     } 
     elementFound = YES; 
    } 
    } 

-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string 

{ 
    if (elementFound) { 
     [soapResults appendString:string]; 
    } 
} 

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI: (NSString*)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if ([elementName isEqualToString:@"style"]) { 
     [rowDict setValue:soapResults forKey:@"style"]; 
     elementFound = NO; 
     soapResults = nil; 
    } 
    if ([elementName isEqualToString:@"thumbnail1"]) { 
     [rowDict setValue:soapResults forKey:@"thumbnail1"]; 
     elementFound = NO; 
     soapResults = nil; 
    } 
} 

我越来越如果我做这样的格式错误,请帮我在广告

谢谢万斯。

回答

0

创建一个对象类让利说SampleObj

* SampleObj.h *

@interface SampleObj : NSObject 
{ 

    NSString *style; 
    NSString *thumbnail; 

} 

@property (nonatomic,retain) NSString *style,*thumbnail; 

* SampleObj.m *

@implementation SampleObj 
@synthesize style,thumbnail; 

//dealloc your synthesized value; 

做解析的源代码像这样。

NSArray *array=[theXML componentsSeparatedByString:@"<Rows>"]; 
for(int i=1;i<[array count];i++) 
{ 
    NSArray *arrayRow=[theXML componentsSeparatedByString:@"<Row>"]; 

    for(int j=1;j<[arrayRow count];j++) 
    { 
     SampleObj *custobj = [[SampleObj alloc] init]; 
     NSString *str=[arrayRow objectAtIndex:i]; 
     NSArray *arr1=[str componentsSeparatedByString:@"<style>"]; 

     NSString *data=[arr1 objectAtIndex:1]; 
     NSRange ranfrom=[data rangeOfString:@"</style>"]; 
     custobj.style =[data substringToIndex:ranfrom.location]; 

     arr1=[str componentsSeparatedByString:@"<thumbnail>"]; 
     data=[arr1 objectAtIndex:1]; 
     ranfrom=[data rangeOfString:@"</thumbnail >"]; 
     custobj.thumbnail=[data substringToIndex:ranfrom.location]; 

     [yourarray addObject:custobj]; 

     [custobj release] 


     } 
} 

,如果你想使用对象:

SampleObj *custobj = [yourarray objectAtIndex:rowPosition]; 
NSLog(@"style : %@", custobj.style); 
NSLog(@"thumbnail : %@", custobj.thumbnail); 

希望这将有助于。对于任何错字,感到抱歉。