Skip to content

Como analisar arquivos XML no Xcode

1 de junho de 2021

Embora um analisador XML integrado agregue valor real a um novo aplicativo desktop ou móvel, codificar essa funcionalidade normalmente requer muito tempo de desenvolvimento e testes beta. O programa Xcode da Apple inclui um analisador XML que ignora a maior parte deste trabalho manual. Um arquivo XML pode conter qualquer coisa, desde dados básicos sobre seu aplicativo até um feed RSS para um site. Eles também podem ser uma ótima maneira de atualizar informações em seu aplicativo remotamente, evitando assim a necessidade de enviar um novo binário para a Apple simplesmente para adicionar um novo item a uma lista.

O Processo Xcode

O processo Xcode integrado contém etapas para inicializar as variáveis ​​a serem usadas, iniciar o processo do analisador XML, alimentar esse processo com um arquivo, avaliar elementos individuais e os caracteres (valor) dentro desses elementos, reconhecer o final de um elemento individual, e encerrando o processo de análise.

Use o analisador XML

Para ilustrar os detalhes, analisaremos um arquivo de exemplo da Internet passando a ele um determinado endereço da Web (URL). Comece criando o arquivo de cabeçalho. Este é um exemplo de arquivo de cabeçalho muito básico para um controlador de visualização de detalhes com os requisitos mínimos para analisar nosso arquivo: @interface RootViewController: UITableViewController {
DetailViewController * detailViewController;
NSXMLParser * rssParser;
Artigos NSMutableArray *;
NSMutableDictionary * item;
NSString * currentElement;
NSMutableString * ElementValue;
BOOL errorParsing;
}
@property (não atômico, reter) IBOutlet DetailViewController * detailViewController;
– (void) parseXMLFileAtURL: (NSString *) URL;

type = “código”>

A função parseXMLFileAtURL inicia o processo. Quando termina, os “artigos” do NSMutableArray contêm os dados. A matriz consiste em dicionários mutáveis ​​com chaves relacionadas aos nomes dos campos no arquivo XML. Em seguida, inicialize o processo: – (void) parserDidStartDocument: (NSXMLParser *) parser {
NSLog (@ “Arquivo encontrado e análise iniciada”);
}

type = “code”> Esta função é executada no início do processo. Não há necessidade de colocar nada nesta função, mas se você quiser realizar uma tarefa quando o arquivo começa a ser analisado, é aqui que você colocaria seu código.

Instrua o programa para baixar algo

Em seguida, instrua o programa a baixar algo: – (void) parseXMLFileAtURL: (NSString *) URL
{
NSString * agentString = @ “Mozilla / 5.0 (Macintosh; U; Intel Mac OS X 10_5_6; pt-br) AppleWebKit / 525.27.1 (KHTML, como Gecko) Versão / 3.2.1 Safari / 525.27.1”;
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:URL]];
[request setValue:agentString forHTTPHeaderField:@”User-Agent”];
xmlFile = [ NSURLConnection sendSynchronousRequest:request returningResponse: nil error: nil ];
artigos = [[NSMutableArray alloc] iniciar];
errorParsing = NÃO;
rssParser = [[NSXMLParser alloc] initWithData: xmlFile];
[rssParser setDelegate:self];
// Você pode precisar ativar alguns deles, dependendo do tipo de arquivo XML que você está analisando
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
}

type = “código”>

Esta função instrui o mecanismo a baixar um arquivo em um determinado endereço da web (URL) e iniciar o processo de análise. Estamos informando ao servidor remoto que somos um Safari rodando no Mac para o caso de o servidor tentar redirecionar o iPhone / iPad para uma versão móvel. As opções no final são específicas para determinados arquivos XML. A maioria dos arquivos RSS e arquivos XML genéricos não precisam deles ativados.

Verifique o resultado de erros

Execute algumas verificações básicas de erros no resultado: – (void) parser: (NSXMLParser *) parser parseErrorOccurred: (NSError *) parseError {
NSString * errorString = [NSString stringWithFormat:@”Error code %i”, [parseError code]];
NSLog (@ “Erro ao analisar XML:% @”, errorString);
errorParsing = SIM;
} Este roteamento de verificação de erros define um valor binário se encontrar um erro. Você pode precisar de algo mais específico aqui, dependendo do que está fazendo. Se você simplesmente precisar executar algum código após o processamento em caso de erro, o

class = “ql-syntax”>

Esta rotina de verificação de erros define um valor binário se encontrar um erro. Você pode precisar de algo mais específico aqui, dependendo do que está fazendo. Se você simplesmente precisar executar algum código após o processamento em caso de erro, a variável binária de análise de erro pode ser chamada nesse momento.

Analise o conteúdo recuperado

Em seguida, o programa divide o conteúdo recuperado e o analisa: – (void) parser: (NSXMLParser *) parser didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualificaçãoNome: (NSString *) qName atributos: (NSDictionary *) ) attributeDict {
currentElement = [elementName copy];
ElementValue = [[NSMutableString alloc] iniciar];
E se ([elementName isEqualToString:@”item”]) {
item = [[NSMutableDictionary alloc] iniciar];
}
}

type = “código”>

A parte principal do analisador XML contém três funções, uma que é executada no início de um elemento individual, uma que é executada durante a análise do elemento e outra que é executada no final do elemento. Para este exemplo, analisaremos um arquivo semelhante a arquivos RSS que dividem os elementos em grupos sob o título de Itens dentro do arquivo XML. No início do processamento, estamos verificando o nome do elemento “item” e alocando nosso dicionário de itens quando um novo grupo é detectado. Caso contrário, inicializamos nossa variável para o valor: – (void) parser: (NSXMLParser *) parser foundCharacters: (NSString *) string {
[ElementValue appendString:string];
}

type = “código”>

Quando encontramos caracteres, simplesmente os adicionamos à nossa variável ElementValue: – (void) analisador: (NSXMLParser *) analisador didEndElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualificadoNome: (NSString *) qName {
E se ([elementName isEqualToString:@”item”]) {
[articles addObject:[item copy]];
} senão {
[item setObject:ElementValue forKey:elementName];
}
}

type = “código”>

O que acontece quando a análise é concluída

Quando o programa termina de processar um elemento, ele deve fazer uma das duas coisas:

  • Se o elemento final for item, terminamos nosso grupo, então adicionaremos nosso dicionário ao nosso conjunto de artigos.
  • Se o elemento não for item, definiremos o valor em nosso dicionário com uma chave que corresponda ao nome do elemento. (Isso significa que não precisamos de uma variável individual para cada campo no arquivo XML. Podemos processá-los um pouco mais dinamicamente.)

Esta é a última função necessária para nossa rotina de análise; termina o documento. Coloque qualquer código final aqui ou especifique uma sub-rotina de correção de erros: – (void) parserDidEndDocument: (NSXMLParser *) parser {
if (errorParsing == NO)
{
NSLog (@ “Processamento XML concluído!”);
} senão {
NSLog (@ “Ocorreu um erro durante o processamento de XML”);
}
}

type = “código”>

Salve os dados

Uma coisa que muitos aplicativos podem querer fazer aqui é salvar os dados ou o arquivo XML em um arquivo no dispositivo. Dessa forma, se o dispositivo não estiver conectado à Internet na próxima vez que o aplicativo for carregado, ele ainda poderá obter essas informações. Claro, não podemos esquecer a parte mais importante: dizer ao seu aplicativo para analisar o arquivo (e fornecer um endereço da web para localizá-lo!). Para iniciar o processo, adicione esta linha de código ao local apropriado onde deseja fazer o processamento XML:

[self parseXMLFileAtURL:@”http://www.webaddress.com/file.xml”];

type = “código”>

Formato mla apa chicago Sua Citação

Nações, Daniel. “Como analisar arquivos XML no Xcode.” ThoughtCo, maio. 21 de 2021, thinkingco.com/parse-xml-files-in-xcode-1994288.
Nações, Daniel. (2021, 21 de maio). Como analisar arquivos XML no Xcode. Obtido em https://www.thoughtco.com/parse-xml-files-in-xcode-1994288
Nações, Daniel. “Como analisar arquivos XML no Xcode.” ThoughtCo. https://www.thoughtco.com/parse-xml-files-in-xcode-1994288 (acessado em 1 de junho de 2021).