2012-07-25 83 views
1

我想在我的项目中使用谷歌天气API。 here我很久没有挣扎了。获取当前温度。城市,湿度,星期几等如何从XML获取值

我成功地打了网址。但我不知道我在findCharacter方法中做了什么来获取值。

感谢

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 
    if ([elementname isEqualToString:@"weather"]) 
    { 
      currentTweet = [Tweet alloc]; 
    } 
} 

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{ 
    if ([elementname isEqualToString:@"city"]) 
    { 

    } 
} 

回答

1

请检查代码:

- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname  namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{ 
    if ([elementname isEqualToString:@"weather"]) 
    { 
      currentTweet = [Tweet alloc]; 
    } 
    else if ([elementname isEqualToString:@"city"]) 
    { 
      currentTweet.city = [attributeDict valueForKey:@"city"] 
    } 
} 

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementname namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 
    if ([elementname isEqualToString:@"weather"]) 
    { 
      NSLog("Current City: %@",currentTweet.city); 
    } 
} 

对于这种类型的XML,你不想使用从NSXMLPareser参考指南,了解有关foundCharactersparser:foundCharacters:

报价方法:

由解析器对象发送,为其委托提供一个字符串 ,表示当前元素的全部或部分字符。

解析器对象可能会向代理发送若干个 解析器:foundCharacters:消息来报告 元素的字符。因为字符串可能只是当前元素的总字符内容的一部分,所以您应该将其附加到字符当前的 堆积中,直到元素更改。

有关详细信息:NSXML Parser ReferenceWorking of parserfoundCharacters use