Revisão Excel - Marcelo Telles
Transcrição
Revisão Excel - Marcelo Telles
Escola Olímpio Curso: Técnico em Informática Professor: Marcelo Telles Trabalhando com dados em arquivos XML Os arquivos XML: São usados para armazenar dados de uma forma estruturada. Além disso também podem serem usados para certas rotinas de programação, como se fossem uma linguagem de programação, porém com algumas limitações. A grande vantagem dos arquivos XML é que eles são independentes de regras e estruturas, flexibilizando, desta forma, suas finalidades. Vamos analisar um arquivo XML: <?xml version="1.0" encoding="utf-8" ?> <Carros> <Carro marca=”Fiat”> <modelo>uno</modelo> <ano>1999</ano> <combustivel> <tipo numero=”1”>gasolina</tipo> <tipo numero=”2”>gas</tipo> </combustivel> </Carro> </Carros> A primeira linha indica a versão e codificação do arquivo e seus dados. As demais linhas são feitas conforme a necessidade da aplicação em questão. Note que temos sintaxe mas não temos regras quanto a limites e tipos de dados. Poderíamos estabelecer regras assim como no banco de dados com relação a tipos de informações a serem adotadas, tais como: números, letras, datas etc. Escola Olímpio Curso: Técnico em Informática Dando nome aos elementos: Professor: Marcelo Telles Escola Olímpio Curso: Técnico em Informática Note que nosso arquivo XML é independente e flexível. Portanto poderíamos ter mais informações dentro dele, como por exemplo assim: <?xml version="1.0" encoding="utf-8" ?> <Carros> <Carro marca=”Fiat”> <modelo>uno</modelo> <ano>1999</ano> <combustivel> <tipo numero=”1”>gasolina</tipo> <tipo numero=”2”>gas</tipo> </combustivel> </Carro> <Carro marca=”GM”> <modelo>Chevete</modelo> <ano>1979</ano> <combustivel> <tipo numero=”1”>gasolina</tipo> </combustivel> </Carro> <Carro marca=”GM”> <modelo>Vectra</modelo> <ano>2010</ano> <combustivel> <tipo numero=”1”>gasolina</tipo> <tipo numero=”2”>alcool</tipo> </combustivel> </Carro> </Carros> Professor: Marcelo Telles Escola Olímpio Curso: Técnico em Informática Professor: Marcelo Telles Criando um arquivo XML Crie um novo projeto em C# Insira as seguintes bibliotecas no cabeçalho: using System.Xml; //permite trabalhar com arquivos do tipo XML using System.IO; //permite manipular arquivos, criar arquivos, abrir para ler e escrever, fechar, excluir, alterar o nome etc. Insira o seguinte código no evento de um botão. XmlTextWriter xtw; //Criando uma Instancia da clase XmlTextWriter. xtw = new XmlTextWriter(filepath, Encoding.UTF8); //definindo o arquivo e definindo a codificação xtw.WriteStartDocument();//começando a escrever no aquivo xtw.WriteStartElement("CustomerDetails"); //criando o elemento root, principal ou raiz. xtw.WriteEndElement();//finalizando o elemento root xtw.Close(); //fechando o arquivo, ele é salvo automaticamente. O código acima cria um arquivo XML filepath é um arquivo com caminho completo que vc queira criar, portanto filepath deve ser substituído por algo como @"c:\file.xml" Ficando assim XmlTextWriter xtw; xtw = new XmlTextWriter(@"c:\file.xml", Encoding.UTF8); xtw.WriteStartDocument(); xtw.WriteStartElement("CustomerDetails"); xtw.WriteEndElement(); xtw.Close(); Nota 1. o @ deve ser usado pois estamos usando barras, e o visual Studio só irá entender as barras se vc informar um @ antes da string com o caminho do arquivo. Verifique se o arquivo foi realmente criado no local desejado, ao clicar no botão. Estaremos usando o arquivo XML para armazenar dados de clientes. A estrutura do XML armazenará o nome e o endereço do cliente Escola Olímpio Curso: Técnico em Informática Professor: Marcelo Telles Gravando em um arquivo XML Agora vamos inserir um novo botão com o seguinte código XmlDocument xd = new XmlDocument(); //Criando uma Instancia da clase XmlDocument FileStream lfile = new FileStream(filepath, FileMode.Open);//criando uma conexão ou fluxo com o arquivo e //abrindo-o para leitura. xd.Load(lfile); //carregando o arquivo para a instancia de um // documento xml (XmlDocument) XmlElement cl = xd.CreateElement("Customer"); //criando o elemento XML chamado Customer cl.SetAttribute("Name", "Marcelo Telles"); //definindo um atributo para o ele//mento recentemente criado XmlElement na = xd.CreateElement("Address"); //criando um elmento nodo secundario XML chamado // Address XmlText natext = xd.CreateTextNode("Novo Hamburgo - RS"); //definindo o valor do nodo Address na.AppendChild(natext); //juntando o texto da variavel natext no nodo //address cl.AppendChild(na); //juntando o texto da variavel na no nodo root xd.DocumentElement.AppendChild(cl); //juntando todo o elemento root element no //document o xml lfile.Close(); //fechando o arquivo xd.Save(filepath); //salvando no local desejado O código acima grava dados em um arquivo XML Lembre-se de substituir o filetpath pelo caminho do seu arquivo. Escola Olímpio Curso: Técnico em Informática Professor: Marcelo Telles Buscando informações em um arquivo XML XmlDocument xdoc = new XmlDocument(); //Criando uma Instancia da clase XmlDocument FileStream rfile = new FileStream(path, FileMode.Open);//criando uma conexão ou fluxo com o arquivo e // abrindo-o para ser atualizado xdoc.Load(rfile); //lendo o arquivo string address; //criando uma variavel do tipo string para armazenar // o address XmlNodeList list = xdoc.GetElementsByTagName("Customer");//procurando por todos os elemento disponiveis no // arquivo xml dentro do nodo Customer for (int i = 0; i < list.Count; i++) //navegando por todos os nodos { XmlElement cl = (XmlElement)xdoc.GetElementsByTagName("Customer")[i];//obtendo o valor do nodo Customer XmlElement add = (XmlElement)xdoc.GetElementsByTagName("Address")[i];//obtendo o valor do nodo addresss if ((cl.GetAttribute("Name")) == "Marcelo Telles")//comparando { address = add.InnerText; //definindo o address MessageBox.Show(address); // exibimos o endereço do Marcelo Telles break; //paramos e saimos do laço } } rfile.Close(); O código acima busca dados em um arquivo XML Lembre-se de substituir o filetpath pelo caminho do seu arquivo. //fechando o arquivo Escola Olímpio Curso: Técnico em Informática Professor: Marcelo Telles Atualizando informações em um arquivo XML XmlDocument xdoc = new XmlDocument(); //Criando uma Instancia da clase XmlDocument FileStream up = new FileStream(filepath, FileMode.Open); //criando uma conexão ou fluxo com o arquivo //e abrindo-o para ser atualizado xdoc.Load(up); //lendo o arquivo XmlNodeList list = xdoc.GetElementsByTagName("Customer"); //procurando por todos os elemento disponiveis no // arquivo xml dentro do nodo Customer for (int i = 0; i < list.Count; i++) //navegando por todos os nodos { XmlElement cu = (XmlElement)xdoc.GetElementsByTagName("Customer")[i]; //obtendo o valor do nodo Customer XmlElement add = (XmlElement)xdoc.GetElementsByTagName("Address")[i]; //obtendo o valor do nodo addresss if (cu.GetAttribute("Name") == "Marcelo Telles") //comparando { cu.SetAttribute("Name", "Marcelo Josué Telles");//definindo o novo valor do atributo. add.InnerText = "Porto Alegre - RS"; //definindo o novo valor do nodo address break;//paramos e saimos do laço } } up.Close();//fechamos o arquivo xdoc.Save(filepath);//salvamos o arquivo XML O código acima atualiza informações em um arquivo XML, isso significa que podemos alterar o endereço de um de nossos clientes cadastrados no arquivo Lembre-se de substituir o filetpath pelo caminho do seu arquivo. Escola Olímpio Curso: Técnico em Informática Professor: Marcelo Telles Excluindo informações em um arquivo XML FileStream rfile = new FileStream(filepath, FileMode.Open); //criando uma conexão ou fluxo com o arquivo e abrindo-o // para ser atualizadom XmlDocument tdoc = new XmlDocument();//Criando uma Instancia da clase XmlDocument tdoc.Load(rfile);//lendo o arquivo XmlNodeList list = tdoc.GetElementsByTagName("Customer"); //procurando por todos os elemento disponiveis no // arquivo xml dentro do nodo Customer for (int i = 0; i < list.Count; i++)//navegando por todos os nodos { XmlElement cl = (XmlElement)tdoc.GetElementsByTagName("Customer")[i];//obtendo o valor do nodo Customer if (cl.GetAttribute("Name") == "Marcelo Josué Telles")//Comprando o elemento a ser removido { tdoc.DocumentElement.RemoveChild(cl);//Removendo o elemento do documento } } rfile.Close();//fechando o arquivo tdoc.Save(filepath);//salvando o arquivo O código acima exclui informações em um arquivo XML, isso significa que podemos apagar todos os dados de um cliente. Lembre-se de substituir o filetpath pelo caminho do seu arquivo. Fonte: http://www.c-sharpcorner.com/UploadFile/vimalkandasamy/Xml03032009055848AM/Xml.aspx