Как разобрать 2 URL с помощью NSXMLParser в одном файле? - PullRequest
0 голосов
/ 12 января 2012

как проанализировать 2 URL с помощью NSXMLParser в одном файле?Я пробовал это так:

[self parseXMLFileAtURL:url1];
[self parseXMLFileAtURL:url2];

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{    
    //here both url's returns the same data (element names are same), so how will I differentiate data between first URL & second URL.

    if(url1 data) { 
        //do something
    }
    if(url2 data) { 
        //do something
    }
}

, поэтому помогите мне найти способ дифференциации.

Ответы [ 4 ]

1 голос
/ 12 января 2012

Я не уверен, но вы можете сначала добавить свои объекты URL в массив, а затем управлять элементами массива вместо URL1 и URL2. Вы можете попробовать это:

 NSString *obj;
    NSMutableArray *urlArray;
    [urlArray addObject:url1];
    [urlArray addObject:url2];

в вашем методе парсера:

 int i=[[urlArray objectAtIndex:obj] intValue];

switch(i){

case 0:
     // we have url1 here
     //do something with it
      break;
case 1:
     // we have url2 here
     //do something...
      break

}

Я надеюсь, что эта точка зрения помогает ..

1 голос
/ 12 января 2012

Я бы не стал. Это не нужно. Я хотел бы иметь 2 отдельных NSXMLParserDelegate для обработки каждого. Или я бы изменил ваш текущий класс, чтобы обрабатывать один файл за раз, и иметь 2 экземпляра этого.

Вы можете создать отдельный класс делегата в этом классе, если вам это нравится.

например:

@implementation YourCurrentClass

@end

@interface ParserDelegate : NSObject <NSXMLParserDelegate> 
@end

@implementation ParserDelegate

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

@end

Используйте несколько экземпляров ParserDelegate, чтобы быть делегатами синтаксического анализа. Затем получите другой код, который проверяет их на результат после того, как они закончили обработку.

0 голосов
/ 12 января 2012

Создайте 2 отдельных объекта NSXMLParser и назначьте теги и в функции делегата проверьте тег и назначьте значение в соответствии с тегами.

0 голосов
/ 12 января 2012

Первый параметр с именем parser - это текущий используемый экземпляр синтаксического анализатора.
Это способ узнать, какой файл вы сейчас анализируете.

Выделите / инициализируйте два отдельных экземпляра NSXMLParser и начните анализ двух ваших файлов с помощью.
Предполагая, что они ivar , простой == тест скажет вам, какой из них используется.

Здесь - ссылка на аналогичный вопрос.

...