Pentru a salva datele unui fisier XML de pe un website intr-un array sau dictionar al aplicatiei se creaza un url:
NSURL *url = [NSURL URLWithString: @"adresa web cu XML-ul"];
Apoi se creaza un parser:
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL: url];
Apoi se incepe analiza XML-ului apeland metoda "parse":
[parser parse];
viewController-ul trebuie sa adopte protocolul NSXMLParser si sa implementeze urmatoarele 3 delegate methods:
// metoda 1 - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
Metoda este trimisa de catre parser catre delegat cand intalneste inceputul unui tag iar aici putem cauta ceea ce ne trebuie,ex tag-ul "Rate":
if([elementName compare: @"Rate"] == NSOrderedSame) [tempString setString: @""];
tempString este declarat ca NSMUtableString in viewController si la inceputul tag-ului ce il setam @"".
// metoda 2 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
Metoda este trimisa de parser pentru a oferi delegatului toate caracterele elementului curent.
[tempString appendString: string];
trebuie apelata metoda appendString: pentru a adauga caracter cu caracter in tempString deoarece metoda delegat este trimisa de mai multe ori si nu se poate salva direct string-ul.
// metoda 3 - (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
Metoda este trimisa de parser catre delegat cand intalneste sfarsitul tag-ului.
if([elementName compare: @"Rate"] == NSOrderedSame) { // se face o copie la tempString pentru a avea alta adresa de memorie. // se adauga string-ul in array apoi se elibereaza memoria,deoarece str a fost creat cu metoda mutableCopy. NSMutableString *str = [tempString mutableCopy]; [array addObject: str]; str release]; }