0

我想从这个url解析 xml 数据

我写了这样的代码:-

NSString *escapedURL = @"http://www.google.com/ig/api?weather=%22Dr%20Vikram%20Sarabhai%20Marg%20Panchavati%20Society%20Gulabai%20Tekra%20Ahmedabad%20Gujarat%20India%22&hl=hr";        
            xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:escapedURL]];;
            [xmlParser setDelegate:self];
            [xmlParser setShouldProcessNamespaces:NO];
            [xmlParser setShouldReportNamespacePrefixes:NO];
            [xmlParser setShouldResolveExternalEntities:NO];
            [xmlParser parse];

- (void)parserDidStartDocument:(NSXMLParser *)parser 
{
    NSLog(@"Document started", nil);
    currentElement = nil;
}

- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError 
{
    NSLog(@"Error: %@", [parseError localizedDescription]);
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI 
 qualifiedName:(NSString *)qName 
    attributes:(NSDictionary *)attributeDict
{

    [currentElement release];
    currentElement = [elementName copy];

    currentName = [[NSMutableString alloc] init];

    //For temeprature
    if ([currentElement isEqualToString:@"forecast_information"])
    {


    }
    else if ([currentElement isEqualToString:@"current_conditions"])
    {



    }
    else if ([currentElement isEqualToString:@"temp_c"])
    {
        //NSLog(@"attributeDict==>%@",[attributeDict objectForKey:@"data"]);
        LblTemperature.text=[NSString stringWithFormat:@"Ahmedabad %@°",[attributeDict objectForKey:@"data"]];
    }



}

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



     if ([elementName isEqualToString:@"temp_c"])
    {   
        //NSLog(@"temp_c: %@", currentName);

    }




}        

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

    if ([currentElement isEqualToString:@"temp_c"])
    {
        [currentName appendString:string];
        //NSLog(@"==>%@",string);
    }


}

- (void)parserDidEndDocument:(NSXMLParser *)parser 
{
    NSLog(@"Document finished");

}

但我无法在此解析中获取 temp_c 的数据。我得到的元素名称是:- xml_api_reply weather forecast_information city postal_code latitude_e6 longitude_e6 forecast_date current_date_time unit_system current_conditions

请帮我..

4

1 回答 1

1

好吧,您可以使用 XPathQuery 来解析 XML。它会让你的生活更轻松。这是 XPathQuery 类的链接和教程。

http://cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html

看看它,如果你愿意使用它,但仍然不明白任何东西,请发表评论。

于 2012-04-13T12:31:28.580 回答