NSXMLParser no iPhone, como eu o uso dado um arquivo xml (newb aqui: \)

Ei pessoal, queria saber como faço para usar o analisador NSXML. Então vamos dizer que eu tenho um arquivo xml simples com elementos como 1/1/1000 14:15:16

Como eu poderia usar o NSXMLParser para analisar o arquivo XML (É em localmente btw, desktop), verificar através de cada elemento e armazenar cada um deles em uma matriz para ser exibido / usado mais tarde?

Eu estava olhando através de alguma documentação sobre isso e eu absolutamente não tenho idéia de como usar o parser eu sei que existem 3 methods (ou mais, por favor corrija-me se estou errado) que pode ser substituído – .. .. didStartElement – .. etc didEndElement – .. etc foundCaracters

A coisa mais simples é fazer algo assim:

NSXMLParser *xmlParser = [[NSXMLParser alloc]initWithData:]; [xmlParser setDelegate:self]; [xmlParser parse]; 

Observe que setDelegate: está configurando o delegado como ‘self’, significando o object atual. Portanto, nesse object, você precisa implementar os methods de delegação mencionados na pergunta.

tão mais abaixo em seu código, cole em:

  - (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict{ NSLog(@"I just found a start tag for %@",elementName); if ([elementName isEqualToString:@"employee"]){ // then the parser has just seen an  opening tag } } - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{ NSLog(@"the parser just found this text in a tag:%@",string); } 

etc etc.

É um pouco mais difícil quando você quer fazer algo como definir uma variável com o valor de alguma tag, mas geralmente é feito usando uma variável de class chamada algo como ” BOOL inEmployeeTag ” que você definiu como true (YES) no didStartElement : method e false no didEndElement : method – e, em seguida, verifique seu valor no método foundCharacters . Se for sim, você atribui o var ao valor de string e, caso contrário, não.

richard