Прежде всего, пожалуйста, примите мои извинения за текст.Я француз, и это не было бы "странно", в моем синтаксисе есть некоторые ошибки.
Имейте в виду, я тоже "новичок" в объективном мире C и программировании.
Итак, чтобы объяснить вам проблему, в которой я на самом деле, мне нужно проанализировать xml, взять из него некоторую информацию (поместить ее в массив или словарь) и отобразить ее в виде.
этовид XML, который мне нужно проанализировать: XML
Итак, как вы можете видеть, в этом XML есть несколько тегов "echeances".В них у вас есть предыдущие десять дат, а в этих датах у вас есть разные значения.
Что я должен отобразить в конце?Теги «Расчет» и «Вариация» ближайшей даты (первая в «списке») для КАЖДОГО тега «echeance».(Мне также нужно подобрать Атрибут "nom =" для каждого "echeance".
На самом деле я научился использовать кодирование "MVC", и у меня есть некоторые проблемы с частью "Модель".
Я использую Xcode 4.2 и использую (я пытаюсь ...) использовать режим ARC.
Итак, давайте посмотрим, что я на данный момент сделал
.h:
#import <Foundation/Foundation.h>
#import "Echeances.h"
@interface XMLToObjectParser : NSObject <NSXMLParserDelegate>
{
NSMutableString *settle;
NSMutableString *settle2;
NSMutableString *change;
NSMutableArray *lstEcheance;
NSString *currentNodeName;
NSMutableString *currentNodeContent;
NSMutableDictionary *dico;
NSMutableArray *settleArray;
NSMutableArray *expiryArray;
NSMutableArray *changeArray;
NSString *expiryName;
int compteur;
Echeance *ech;
}
@property (nonatomic, strong) NSMutableArray *expiryArray;
@property (nonatomic, strong) NSMutableArray *settleArray;
@property (nonatomic, strong) NSMutableArray *changeArray;
@property (nonatomic, strong) NSMutableString *currentNodeContent;
@property (nonatomic, strong) Echeance *ech;
@property (nonatomic, strong) NSString *expiryName;
@property (nonatomic, strong) NSMutableString *settle;
@property (nonatomic, strong) NSMutableString *settle2;
@property (nonatomic, strong) NSMutableString *change;
- (NSMutableArray *)expiry;
- (id)parseXMLAtURL:(NSURL *)url toObject:(NSString *)echeance parseError:(NSError **)error;
@end
.m:
#import "XMLToObjectParser.h"
@implementation XMLToObjectParser
@synthesize expiryArray;
@synthesize settleArray;
@synthesize changeArray;
@synthesize currentNodeContent;
@synthesize ech;
@synthesize expiryName;
@synthesize settle;
@synthesize settle2;
@synthesize change;
- (NSMutableArray *)expiry
{
return expiryArray;
}
- (NSMutableDictionary *)dico
{
return dico;
}
- (id)parseXMLAtURL:(NSURL *)url toObject:(NSString *)aExpiryName parseError:(NSError **)error
{
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:url];
[parser setDelegate:self];
[parser parse];
if([parser parserError] && error)
{
*error = [parser parserError];
}
return self;
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
if([elementName isEqualToString:@"echeance"])
{
ech.nomEcheance = [attributeDict objectForKey:@"nom"];
[expiryArray addObject:ech.nomEcheance];
NSLog(@"%@", expiryArray);
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
if([elementName isEqualToString:@"settle"] || [elementName isEqualToString:@"variation"])
{
for(int i = 0; i < [expiryArray count]; i++)
{
[settleArray addObject:currentNodeContent];
NSLog(@"settle Array: %@",[settleArray lastObject]);
}
}
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
[currentNodeContent setString:string];
}
@end
И, как вы можете сделать ставку на это ... Это не работает.
То, что я действительно хочусделать, это сделать словарь с атрибутом "nom =" из тега "echeance" как КЛЮЧ моего словаря, и каждый ключ связан с правильным урегулированием и вариацией, как объяснено в верхней части моей темы.Я хотел бы поблагодарить всех людей, которые попытаются помочь мне:)
Спасибо за чтение.
Romain