NSXMLParser проблема - PullRequest
       7

NSXMLParser проблема

0 голосов
/ 21 июня 2011

У меня есть 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); } }

Любая помощь приветствуется.

Спасибо, Max

Ответы [ 2 ]

2 голосов
/ 21 июня 2011

Значения, которые вы видите в 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 голос
/ 21 июня 2011

Используйте метод парсера, как показано ниже:

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

Надеюсь, это будет полезно для вас.

Дайте мне знать, если возникнут трудности.

...