2011-10-01 28 views
0

如何可以解析使用的NSXMLParser,如果我需要的所有影像,如何在iphone编程中使用nsxmlparser与多个节点的相同名称解析xml?

<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为此,但仍不清楚做代码?

+0

请提供完整的URL – Ron

+0

http://sosmoths.com/.xml/moths.xml –

+0

这是XML ROM,现在我可以做什么,我想使用NSXMLParser,而不是touchXML或任何其他@Ron –

回答

3
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];   
    } 
} 
+0

Thanx Ron,我今晚会申请,并提出并接受答案,如果它能为我工作 –

+0

我已经接受了答案,但还有一个问题,有每个标题,我必须将数据保存在各自的控制器中,所以如何在四个不同的对象中保存4个蛾的数据 –

+0

如果你想在字典中保存四个月的数据到不同的目标中ü根据当前时间之后的旧图像生成动态的关键像 – Ron

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

{

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

     } 

}

在此之前,你需要找到的元素名称,然后做上述代码。此可以帮助你。

+0

但在哪里初始化图像数组? –

+0

你可以在initWithData:method.Means中传递请求。 –

1
  1. 取词典中initWithData:梅索德
  2. 取的值作为像标题密钥,描述
    在didStartElement方法
  3. ,在图像标签的alloc image_array
  4. 在didEndElement方法中,在图像标签添加您的数据(在这里您的图像链接)image_array
  5. 现在在didEndElement方法,在图像标记广告d数组到主字典作为关键图像

这一切.....

相关问题