Нужно получить атрибут из файла XML - PullRequest
1 голос
/ 07 августа 2011

Я собираюсь перейти непосредственно к вопросу, у меня есть XML-файл, который имеет такие атрибуты, как, например:

<Lowest units="p">135.9</Lowest>

То, что мне нужно получить, это значение из «единиц», как будтоЯ просто получаю значение из 'Lowest', оно отображает его как '{Lowest = "135.9" \ n \ t;} 'и я предполагаю, что если я получу его из атрибута, он просто отобразит' 135,9 'вместо указанного выше.

Вот два основных бита кода, которые я использую:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    NSLog(@"found this element: %@", elementName);

    currentElement = [elementName copy];


    if ([elementName isEqualToString:@"Fuel"])
    {
        item = [[NSMutableDictionary alloc] init];
        fuel_price = [[NSMutableString alloc] init];
        fuel_type = [[NSMutableString alloc] init];
    }


}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{
    NSLog(@"ended element: %@", elementName);

    if ([elementName isEqualToString:@"Fuel"])
    {
        [item setObject:fuel_price forKey:@"p"];

        [item setObject:fuel_type forKey:@"type"];

        [prices addObject:[item copy]];

        NSLog(@"adding fuel prices: %@ - %@", fuel_price, fuel_type);
    }

}

Надеюсь, кто-то может направить меня в правильном направлении, так как я попробовал так много методов без удачи.

Заранее спасибо!:)

1 Ответ

1 голос
/ 07 августа 2011

Все атрибуты хранятся в этом атрибуте attributeDict NSDcitionary, который вы получаете в методе didStartElement ..., и он отформатирован таким образом, что имя атрибута является ключом, а значение является, ну, значением :) Так что внутри вашего элемента, если вы хотите получить значениеатрибута с именованными единицами вы бы сделали так:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([elementName isEqualToString:@"Lowest"]) {
        NSString *units = [attributeDict objectForKey:@"units"];
    }
}
...