2013-06-04 86 views
-3

我想读一些网址,这些都是在XML文件通过网络服务来了。如何读取XML文件从Web服务中获得的ios

<chaneels> 
    <chaneel name="AAA"> 
     <url>http://188.138.95.120:8010/</url> 
    </chaneel> 
    <chaneel name="gold"> 
     <url>http://188.138.95.120:8020/</url> 
    </chaneel> 
    <chaneel name="BBB"> 
     <url>http://188.138.95.120:8090/</url> 
    </chaneel> 
    <chaneel name="CCC"> 
     <url>http://188.138.95.120:8050/</url> 
    </chaneel> 
    <chaneel name="DDD"> 
     <url>http://209.239.127.105:8010/</url> 
    </chaneel> 
</chaneels> 

这是我从网络服务获得的XML。然后我想单独获取这些URL。任何人都可以告诉我一种方法来做到这一点?

+0

ü可以给我任何utoril ULR? – iDia

+0

@Divyu:错误的评论。他需要XML解析,所以他需要使用的NSXMLParser –

+0

@Divyu JSON套件可我们用于解析XML?奇怪! –

回答

1

首先通过检验部件chaneel其中itemcurrentNamecurrentURLallDataproperty宣布启动解析器。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    if([elementName isEqualToString:@"channel"]) { 
     item = [[NSMutableDictionary alloc] init]; 
     currentName = [[NSMutableString alloc] init]; 
     currentURL = [[NSMutableString alloc] init]; 
     [currentName appendString:[attributeDict objectForKey:@"name"]]; 
    } 
} 

之后获取的欲望值....

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
    if([currentElement isEqualToString:@"url"]) { 
      [currentURL appendString:string]; 
     } 
} 

那家商店的价值与在这种方法的愿望键一本字典后...

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if([elementName isEqualToString:@"channel"]) { 
     [item setObject:currentName forKey:@"Name"]; 
     [item setObject:currentURL forKey:@"URL"]; 

     [allData addObject:[item copy]]; 
    } 
} 

allData,你会得到所有的URL对应的名称...