
Quem utiliza o iOS SDK sabe o quanto é trabalhoso utilizar a classe NSXMLParser para ler arquivos XML.
NSXMLParser faz parte do framework Foundation que contém diversas classes que não estão presentes na linguagem Objective-C.
O código abaixo mostra a utilização da classe NSXMLParser:
NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL URLWithString:@"url_to_xml"]];
[parser setDelegate:self];
[parser parse];
...
Agora precisamos implementar os métodos da classe delegate(NSXMLParserDelegate) para identificar os elementos do XML:
(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict;
//Chamado toda vez que o parser encontrar um elemento de início de tag
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName;
//Chamado quando é encontrado o fim da tag de um elemento
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string;
//chamado quando o parser encontrar uma string entre as tags. Ex. Retonaria Diogo caso estivesse lendo a tag
E nesse tal de TBXML, como fazemos isso?
Utilizando o TBXML acessamos os atributos 'diretamente' através de DSLs.
Vejam o código abaixo para um exemplo:
TBXML * tbxml = [[TBXML tbxmlWithURL:[NSURL URLWithString:@"url_to_xml"]] retain];
//Obtendo o o root element do XML
TBXMLElement *rootElement = tbxml.rootXMLElement;
//Obtendo o valor do atributo nome presente no rootElement
NSString *nome = [TBXML valueOfAttributeNamed:@"nome" forElement:rootElement];
Abraços,

