0

我有一个 XML 文件:

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

这是我的代码:

    - (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);
        }
    }
}

这里我需要从trkpt TAG 的latlon值中解析数据。任何人都可以指导我实现这一目标.. 提前致谢。

4

3 回答 3

0

latlon不是值,而是节点trkpt的属性

您应该可以在didStartElement上使用它们,如下所示:

[attributeDict objectForKey:@"lat"];

或者

[attributeDict objectForKey:@"lon"];

这与 NSXMLPArser 无关,而与 XML 结构本身有关。

于 2013-11-08T19:29:52.553 回答
0

您要查找的值存储在attributeDict字典中

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName
    namespaceURI:(NSString *)namespaceURI
   qualifiedName:(NSString *)qName
      attributes:(NSDictionary *)attributeDict
于 2013-11-08T19:30:24.927 回答
0

最后我找到了存档的解决方案..

在这里我添加了我的示例代码..

    - (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;
        }
    }
}
于 2013-11-08T20:03:06.780 回答