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

Documentos relacionados