Как проанализировать XML с помощью nsxmlparser с одинаковыми именами нескольких узлов в программировании iphone? - PullRequest
0 голосов
/ 01 октября 2011

Как я могу разобрать, используя NSXMLParser, если мне нужны все изображения,

<title>Title</title>
<description>my description is here </description>

<images>

<image>http://www.sosmoths.com/mothImages/800px-Tineola.bisselliella.7218.jpg</image>

<image>http://www.sosmoths.com/mothImages/800px-Tineola.bisselliella.mounted.jpg</image>

<image>http://www.sosmoths.com/mothImages/800px-XN_Tineola_bisselliella_1.jpg</image>

<image>http://www.sosmoths.com/mothImages/Tineola_bisselliella.JPG</image>

</images>

Есть больше узлов, таких как заголовок, описание, так что, как разобрать такой xml, я запутался в узлах изображения, яподумываете использовать NSMutableArray для этого, но все еще не ясно, чтобы сделать код?

Ответы [ 3 ]

4 голосов
/ 01 октября 2011
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
                                  namespaceURI:(NSString *)namespaceURI
                                 qualifiedName:(NSString *)qName

{

if ([elementName isEqualToString:"<image>"])
        {
            [imagearray addObject:imageurl];

        }

}

Перед этим вам нужно найти имя элемента, а затем выполнить приведенный выше код. Это может вам помочь.

3 голосов
/ 01 октября 2011
use this it work

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{
    NSLog(@"%@",elementName);
    if([elementName isEqualToString:@"moths"]){
        mytblarray=[[NSMutableArray alloc] init];
    } else if([elementName isEqualToString:@"moth"]){
        tmpdic=[[NSMutableDictionary alloc] init];
    }
    else if([elementName isEqualToString:@"images"]){
        imgArray=[[NSMutableArray alloc] init];
    }

}

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

    if(tmpstr!=nil && [tmpstr retainCount]>0){ [tmpstr release]; tmpstr=nil; }
    tmpstr=[[NSString alloc] initWithString:string];

}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{

    if([elementName isEqualToString:@"moth"]){
        [mytblarray addObject:tmpdic];
        [tmpdic release];
    }if([elementName isEqualToString:@"images"]){
        [tmpdic setValue:imgArray forKey:elementName];
    }
    else if([elementName isEqualToString:@"image"]){
        [imgArray addObject:tmpstr];        
    }
}
1 голос
/ 01 октября 2011
  1. принять словарь в initWithData: метод
  2. Получить значения в качестве ключа, например заголовок, описание
  3. в методе didStartElement, в теге изображений alloc image_array
  4. в методе didEndElement, в теге image добавьте ваши данные (здесь ссылка на изображение) в image_array
  5. теперь в методе didEndElement, в теге images добавьте этот массив в ваш основной словарь в качестве ключаimages

вот и все .....

...