ios中TAG内的XML解析

时间:2013-11-08 18:59:16

标签: ios xml-parsing nsxmlparser

我有一个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中 lat lon 值的数据。任何人都可以指导我实现这一目标。在此先感谢。

3 个答案:

答案 0 :(得分:0)

lat lon 不是值,而是节点 trkpt

的属性

他们应该可以在 didStartElement 中使用,如下所示:

[attributeDict objectForKey:@"lat"];

[attributeDict objectForKey:@"lon"];

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

答案 1 :(得分:0)

您要查找的值存储在<{p>中的attributeDict字典中

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

答案 2 :(得分: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;
        }
    }
}