【问题标题】:XML Parsing within TAG in iosios中TAG内的XML解析
【发布时间】:2013-11-20 21:44:39
【问题描述】:

我有一个 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);
        }
    }
}

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

【问题讨论】:

  • 你尝试了什么?这不是和你之前的问题类似吗?
  • 是的。在这里我解析所有数据。但是多诺如何解析这个纬度和经度值?你能指导我吗..
  • 显示您的代码和结果。然后我们可以帮助找出错误。
  • 你好,我不是在玩你,我有问题需要解决。实际上我的查询是“我的本地 URL 中有一个 XML 文件。这已经在上一个问题中显示。当我解析数据时,只获取空值。因为这里 TAG 中没有可用的数据. 但是有 TAG 里面的数据。我怎样才能从中得到 lat 和 lon 值??”
  • 你为什么不直接显示你的代码?

标签: ios xml-parsing nsxmlparser


【解决方案1】:

lat 和 lon 不是值,而是节点 trkpt

的属性

您应该可以在 didStartElement 获得它们,如下所示:

[attributeDict objectForKey:@"lat"];

或

[attributeDict objectForKey:@"lon"];

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢您的回复。
    【解决方案3】:

    我终于找到了存档的解决方案..

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-18
      • 2013-02-08
      • 2015-02-24
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 2014-05-13
      • 2012-08-11
      相关资源
      最近更新 更多