سؤال

I have a XML file:

<trkseg>
    <trkpt lat="11.004661" lon="76.97364"></trkpt>
    <trkpt lat="11.005497" lon="76.97496"></trkpt>
</trkseg>

Here is my code:

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
  namespaceURI:(NSString *)namespaceURI
 qualifiedName:(NSString *)qName
    attributes:(NSDictionary *)attributeDict
{    
    if ([elementName isEqualToString:@"trkseg"])
    {
        self.tag = [[MRTRouteMapTag alloc]init];
        NSLog(@"SRC: %@",[attributeDict objectForKey:@"lat"]);
    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [self.workingPropertyString appendString:string];
}

//event_logo, event_name, event_venue, event_date_time, race_details, event_descriptions;

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName
  namespaceURI:(NSString *)namespaceURI
 qualifiedName:(NSString *)qName
{
    if (self.tag)
    {
        NSString *trimmedString = [self.workingPropertyString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        // clear the string for next time
        [self.workingPropertyString setString:@""];

        if ([elementName isEqualToString:@"trkseg"])
        {
            [self.array addObject:self.tag];
            self.tag = nil;
            NSLog(@"Array Count ==>>>>>> %d", [self.array count]);
        }

        // Get Registered User Details
        // ------ ------- ------------
        else if ([elementName isEqualToString:@"trkpt"])
        {
            NSDictionary *attributeDict;
            NSString *imageURLString = [attributeDict objectForKey:@"lat"];
            self.tag.latitude = trimmedString;
            NSLog(@"race_id ==>> %@", imageURLString);
        }
    }
}

Here I need to parse data from trkpt TAG of lat and lon value. Could any one guide me to achieve this.. Thanks in Advance.

هل كانت مفيدة؟

المحلول 3

At finally i find the solution to archive it..

Here i added my sample code..

    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([elementName isEqualToString:@"trkpt"])
    {
        self.tag = [[MRTRouteMapTag alloc]init];
        lat = [attributeDict objectForKey:@"lat"];
        lon = [attributeDict objectForKey:@"lon"];

        tag.latitude = lat;
        tag.longitude = lon;
    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [self.workingPropertyString appendString:string];
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if (self.tag)
    {
        if ([elementName isEqualToString:@"trkpt"])
        {
            [self.array addObject:self.tag];
            self.tag = nil;
        }
    }
}

نصائح أخرى

lat and lon are not values, but attributes of node trkpt

They should be available to you at didStartElement like so:

[attributeDict objectForKey:@"lat"];

or

[attributeDict objectForKey:@"lon"];

This is not related to NSXMLPArser, but the XML structure itself.

The values that you are looking for are stored in the attributeDict dictionary in

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
    namespaceURI:(NSString *)namespaceURI
   qualifiedName:(NSString *)qName
      attributes:(NSDictionary *)attributeDict
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top