NSXMLParser问题

时间:2011-06-21 09:41:25

标签: iphone nsxmlparser

我有一个包含这样的行的xml文件:

  <Country ID="" Name="Italy" />
  <City ID="" Name="Rome" />
  <Place ID="" Name="Colosseum">

但是当我解析它时,元素Country或City或Place为空(换行符)

我的代码是:

    - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
        if ([currentElement isEqual:@"Country"]) {
             NSLog(@"Country %@", string);
        }
    }

感谢任何帮助。

谢谢, 最大

2 个答案:

答案 0 :(得分:2)

您在xml中看到的值是元素属性,而不是元素数据。所以它不会出现在'foundCharacters'方法中。 您必须从'didStartElement'方法中的属性字典中获取属性值:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([currentElement isEqual:@"Country"]) {
         NSLog(@"Country %@", [attributeDict objectForKey:@"Name"]);
    }
}   

答案 1 :(得分:1)

使用如下解析器方法:

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
    if(currentKey){
        if(!currentStringValue){
            currentStringValue = [[NSMutableString alloc] initWithCapacity:200];
        }
        [currentStringValue appendString:string];
    }
}


    - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
    {
        if ([currentElement isEqual:@"Country"]) {
             NSLog(@"Country %@", [attributeDict objectForKey:@"Name"]);
        }
    }   

希望它对你有所帮助。

如有任何困难,请告诉我。