如何从XML中获取值

时间:2012-07-25 16:32:35

标签: iphone ios delegates xml-parsing nsxmlparser

我想在我的项目中使用google weather api。 here我很长时间都在苦苦挣扎。获得当前的温度。城市,湿度,星期等等。

我成功点击了网址。但我不知道我在foundCharacter方法中做了什么来获取值。

由于

- (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 个答案:

答案 0 :(得分: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,您不想使用parser:foundCharacters:

引用NSXMLPareser参考指南,了解foundCharacters方法:

  

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

     

解析器对象可以发送几个委托   parser:foundCharacters:报告一个字符的消息   元件。因为字符串可能只是整个字符的一部分   当前元素的内容,您应该将其附加到当前元素   字符的积累直到元素改变。

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