2012-04-13 6 views
0

ich auf XML-Daten aus dieser urlxml in iphone für ob Lage Parsen mit Google api

analysieren möchte ich den Code wie folgt geschrieben: -

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"); 

} 

Aber ich bin nicht in der Lage zu bekommen die Daten von temp_c in diesem Parsing. der Elementname, den ich bekommen habe ist: - xml_api_reply Wetter forecast_information Stadt postal_code latitude_e6 longitude_e6 forecast_date current_date_time unit_system current_conditions

Bitte helfen Sie mir ..

+0

* Nur zu sagen: Sie haben Ihre Adresse in escapedURL .. * :-D –

+0

Maybe [diese Parsing-Methode] (http://stackoverflow.com/questions/9747396/how-to-parse-xml-file-from -a-server/9747441 # 9747441) könnte Ihnen helfen. –

+0

@Thanks für die schnelle Antwort.Ich weiß, dass ich es mit der Verwendung von String-Operation gelöst haben könnte.Ich will es auf die richtige Weise tun.so ich denke, mit nsxmlparser ist am besten.Als die Zeichenfolge Operation ist die letzte Option. –

Antwort

1

Nun, können Sie Verwenden Sie XPathQuery zum Analysieren der XML. Es wird dein Leben viel einfacher machen. Hier ist der Link für die XPathQuery-Klasse und ein Tutorial.

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

Werfen Sie einen Blick auf sie, wenn Sie bereit sind, mit ihm zu arbeiten, und alles immer noch nicht verstehen, Kommentar.

+0

Vielen Dank für die schnelle Antwort. Es ist nicht möglich, es durch Nsxmlparsing zu tun. –

+0

Es ist, aber es ist ein Aufwand für sicher ..: S Ich benutze immer XPathQuery für die Analyse. Hast du es versucht? Es ist wirklich einfach zu bedienen. Importieren Sie einfach die Klassen und verwenden Sie NSArray * PerformXMLXPathQuery (NSData * Dokument, NSString * Abfrage); Übergeben Sie die Argumente, haben Sie Ihr XML in einem NSData-Objekt und übergeben Sie für den Abfrageteil "//" für root, übergeben Sie "// root // item" für Unterbaumelemente. Versuchen NSLog die Ausgabe, Sie sehen Ihr gewünschtes Element/Attribut. Von da an wird es kein Problem für dich sein. –

+0

Und es wird Ihnen die geparsten Daten die 'richtige Art' geben :) –