0

私のXML形式は次のようなものです:

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

このような NSMutableArray を作成するにはどうすればよいですか ({style = "value"; サムネイル = "value";}.....)

これが私のコードです:

-(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;
   }
}

私がこのようにやっていると、間違ったフォーマットになっています。助けてください

前もって感謝します。

4

1 に答える 1

0

1 つのオブジェクト クラスを作成します。たとえば、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);

それが役立つことを願っています。タイプミスでごめんなさい。

于 2013-10-10T07:34:00.560 に答える