Trabalhando com XML RENATO CORREIA DE MATOS



Documentos relacionados
Consulta de endereço através do Cep

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Validando dados de páginas WEB

Microsoft Visual Studio 2010 C# Volume II

Manual de Instalação do AP_Conta Windows

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

WEBDESIGN. Professor: Paulo Marcos Trentin - paulo@paulotrentin.com.br Escola CDI de Videira

CODE IGNITER INSTALAÇÃO & BANCO DE DADOS

Personalizações do mysuite

Repeater no GASweb. Regiões

Esse manual é um conjunto de perguntas e respostas para usuários(as) do Joomla! 1.5.

Omega Tecnologia Manual Omega Hosting

Guia de Consulta Rápida. PHP com XML. Juliano Niederauer. Terceira Edição. Novatec

Criando uma agenda simples com NetBeans 6.5

Criando & Consumindo um WebService com ASP.NET 2.0 Publicado em: 25 de Agosto de 2007 Por Herman Ferdinando Arais

C# - Conexão com MySQL

Configuração do cliente de Thunderbird para usuários DAC

AMBIENTE. FORMULÁRIO: é a janela do aplicativo apresentada ao usuário. Considere o formulário como a sua prancheta de trabalho.

( TIAGO DOS SANTOS MENDES ) PROGRAMAÇÃO DISPOSITIVOS MOVEIS ANDROID STUDIO

Programação Orientada a Objetos com PHP & MySQL Cookies e Sessões. Prof. MSc. Hugo Souza

Criando um carrinho de compras

MANUAL DO ANIMAIL Terti Software

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - MILLENNIUM

GUIA MUDANÇA E FORMATAÇÃO DE SERVIDOR - SLIM

VISUAL LIGHTBOX FERRAMENTA WEB DESIGN FABIANO KEIJI TAGUCHI

Lição 1 - Criação de campos calculados em consultas

Manual Integra S_Line

Procedimentos para Reinstalação do Sisloc

Arquivos de Textos no C - Básico

Tutorial do ADD Analisador de Dados Dinâmico.

Portal Sindical. Manual Operacional Empresas/Escritórios

Criando um script simples

ASSOCIAÇÃO CRISTÃ DE MOÇOS DO RIO GRANDE DO SUL DEPARTAMENTO DE TECNOLOGIA DA INFORMAÇÃO

Criando uma aplicação Web em C# usando o NHibernate

Aula 06 Usando controles em ASP.NET

Introdução a Java. Hélder Nunes

Entradas Digitais. PdP. Autores: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 27/12/2005 Última versão: 18/12/2006

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

Manual de criação de envios no BTG360

GUIA BÁSICO DA SALA VIRTUAL

Clique no botão novo

Login. Criar um novo website File > New > WebSite Framework 4.5 Visual C# ASP.NET Empty Web Site Nome do projeto: WebLogin

Follow-Up Acompanhamento Eletrônico de Processos (versão 3.0) Manual do Sistema. 1. Como acessar o sistema Requisitos mínimos e compatibilidade

USANDO O ROUNDCUBE WEBMAIL

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

Instalando e configurando o IIS no Windows Server 2012 Depois do Windows server 2012 instalado, devemos adicionar IP estático a ele, vamos abrir o

Resumo da Matéria de Linguagem de Programação. Linguagem C

Upload e Download de Arquivos. Ao programador Morfik, cabe implementar em sua aplicação os mecanismos gerenciem todo o processo acima.

Veja abaixo um exemplo de como os dados são mostrados quando usamos o

3. No painel da direita, dê um clique com o botão direito do mouse em qualquer espaço livre (área em branco).

Scriptlets e Formulários

JDBC Java Database Connectivity

Podemos também definir o conteúdo dos menus da página inicial. Clique em Menus, Main Menu.

"Manual de Acesso ao Moodle - Discente" 2014

1 Cadastre-se Mozilla Firefox. AQUI Esqueci a senha Login Senha. Esqueci a senha Login Enviar Solicitação OBS: Nome: Login:

CRIANDO TEMPLATES E LEGENDAS

1 Essa é a tela de login do Sistema de Atendimento Online, siga o passo a passo abaixo.

Procedimentos para Instalação do Sisloc

MANUAL PARA ACESSO E USO DA REDE ADPF

Serviço Seguro de Mensagens Instantâneas

Está apto a utilizar o sistema, o usuário que tenha conhecimentos básicos de informática e navegação na internet.

Visão Geral da. Plataforma Ning 5. Como publicar. Vídeos e Fotos?

Safeweb enotar versão 4.1

AJAX no GASweb. Mas e afinal, para que usamos o AJAX?

STK (Start Kit DARUMA) Observer2 Driver para Linguagens DOS Mini Impressoras Versão 1.0

FERRAMENTAS DE COLABORAÇÃO CORPORATIVA

Instalando o Internet Information Services no Windows XP

Programação para Android. Aula 05: Estilos e temas; galeria de imagens

Trabalhando com conexão ao banco de dados MySQL no Lazarus. Prof. Vitor H. Migoto de Gouvêa Colégio IDESA 2011

TUTORIAL III: ADICIONANDO AJUDA. Adicionando Ajuda

8VDQGR5HSRUW0DQDJHUFRP&ODULRQH3RVWJUH64/ -XOLR&HVDU3HGURVR 8VDQGRSDUkPHWURV

2 echo "PHP e outros.";

DESENVOLVIMENTO DE SOFTWARE PARA INTERNET LABORATÓRIO 1 PROF. EMILIO PARMEGIANI

Manual Captura S_Line

Acessando um Banco de Dados

Este documento visa facilitar e viabilizar a introdução ao módulo de Manufatura no Sistema

Manual de Integração

NetEye Guia de Instalação

1 - Entrando no Sistema

Faculdade Boa Viagem Sistemas de Informação Gerenciais EXERCÍCIO PASSO-A-PASSO PEDIDOS E CONTROLE DE ESTOQUE. Microsoft Access.

EXEMPLO DE COMO FAZER UMA MALA DIRETA

Configurações de Templates no SolidWorks 2011

Tutorial SGCD. 1. Efetuando Login no Sistema. 2. Criando uma nova página. 3. Editando uma página já existente

Aula 1: Noção Básica e Criação de Tabelas.

Introdução ao Processamento de Imagens com o IRIS Por Rodolfo Barros

Manual de operação. BS Ponto Versão 5.1

NewAgent enterprise-brain

Construção do Boxplot utilizando o Excel 2007

PdP. Autor: Luís Fernando Patsko e Tiago Lone Nível: Intermediário Criação: 26/12/2005 Última versão: 18/12/2006

Transformação de Documentos XML em Bases de Dados Relacionais Utilizando ASP.NET

Orientação a Objetos

Manual de Instalação e Configuração do Primeiro Backup Versão PRO

Fluxo de trabalho do Capture Pro Software: Indexação de código de barras e separação de documentos

Cobrança Bancária. Contas / Manutenção.

SISTEMA DE PRODUTOS E SERVIÇOS CERTIFICADOS. MÓDULO DO CERTIFICADOR MANUAL DE OPERAÇÃO Versão 2.4.6

MANUAL DO INSTAR-MAIL 1.0. Pagina de login e senha do Instar-Mail

MANUAL DE MEMBRO COMUNIDADE DO AMIGO

Vamos criar uma nova Página chamada Serviços. Clique em Adicionar Nova.

ANDROID APPLICATION PROJECT

Transcrição:

Trabalhando com XML RENATO CORREIA DE MATOS Para que aplicações heterogêneas possam se comunicar é necessário que haja um padrão. Uma boa escolha para a troca de mensagens seria por meio de arquivo texto, pois nesse caso o conteúdo da mensagem poderá ser entendido por todos os sistemas independente da sua plataforma. O padrão atual que vem sendo usado é o XML (Extensible Markup Language). Nesse artigo irei abordar diferentes caminhos para se trabalhar com arquivos XML, criaremos um mecanismo Parser para varrer as TAGS de um documento XML e também veremos como usar DataSets para gerenciar XML. O.NET FRAMEWORK provém classes que possibilitam navegar dentro de um documento XML e extrair suas informações. XML Document Object Model ou simplesmente XML DOM Usando XML DOM você pode carregar todo o documento XML para a memória e realizar as operações básicas como leitura e edição do conteúdo. No exemplo abaixo temos um arquivo texto que contém informações sobre uma lista de contatos, formatado dentro do padrão XML. <?xml version= 1.0?> <contatos> <contato> <nome>renato</nome> <telefone>2214362</telefone> <email>reneuece@ig.com.br</email> </contato> <contato> <nome>fernando</nome> <telefone>30940054</telefone> <email>fernando@yahoo.com.br</email> </contato> </contatos> No XML apresentado <CONTATOS> é o nó PAI. O nó imediatamente filho dele é <CONTATO> sem o S. Quando NOS encontram-se posicionados no mesmo nível como: <nome>, <telefone> e <email> dizemos que eles são irmãos. O XML DOM contém diferentes tipos de nós. Vamos descrevê-los na tabela que se encontra logo abaixo: Tipo de Nó DOCUMENT DOCUMENTTYPE ELEMENT ATTRIBUTE COMMENT TEXT Descrição É o container para todos os nós. Também é chamado de ROOT Representa o <!DOCTYPE> Os elementos ou TAGS O tipo de atributo de um elemento Uma breve descrição sobre o conteúdo Um texto para representação do nó ou atributo Existem dois caminhos para se carregar um XML para ser analisado por uma variável usando XML DOM. Podemos usar tanto o método load e especificar um arquivo

XML ou então loadxml e informar todo o conteúdo como um parâmetro. Vejamos o código abaixo para melhor entendê-los: 1. Abra o Visual Studio 2005 e crie um novo projeto do tipo Windows Application de acordo com a figura abaixo: 2. Adicione um Button e um TextBox. E no evento OnClick do botão adicione o código abaixo. Mas não esqueça de antes acrescentar o namespace System.XML para poder usar a classe XmlDocument.

Exemplo 1: using System.Xml; private void ButtonLoad_Click(object sender, EventArgs e) XmlDocument doc = new XmlDocument(); doc.load("c:\\temp\\contatos.xml"); textbox1.text = doc.innertext.tostring(); No código acima, após a realização da carga do XML para a variável doc e acionarmos a propriedade InnerText o conteúdo que é apresentado dentro do TextBox não é exibido junto das TAGS XML. Somente o texto das TAGS é retornado. Agora substitua o código do evento OnClick pelo que se encontra logo abaixo. Veremos uma outra maneira de se carregar um documento XML usando o método loadxml: Exemplo 2: XmlDocument doc = new XmlDocument(); doc.loadxml("<contatos>"+ "<contato>"+ "<nome>renato</nome>"+ "<telefone>2214362</telefone>"+ "<email>reneuece@ig.com.br</email>"+ "</contato>"+ "<contato>"+ "<nome>fernando</nome>"+ "<telefone>30940054</telefone>"+ "<email>fernando@yahoo.com.br</email>"+ "</contato>"+ "</contatos>"); textbox1.text = doc.innertext.tostring(); Diferente do nosso primeiro exemplo, no código a cima passamos todo o conteúdo do XML por parâmetro para dentro do método. No exemplo a seguir ao invés de apresentar o texto do XML, vamos gerar um arquivo em disco baseado no valor de uma string xmldata que será previamente formatada. Para isso substitua o código do evento OnClick pelo que segue logo abaixo: Exemplo 3: XmlDocument doc = new XmlDocument(); String xmldata = "<contatos>"+ "<contato>"+ "<nome>renato</nome>"+ "<telefone>2214362</telefone>"+ "<email>reneuece@ig.com.br</email>"+ "</contato>"+ "<contato>"+ "<nome>fernando</nome>"+ "<telefone>30940054</telefone>"+ "<email>fernando@yahoo.com.br</email>"+ "</contato>"+ "</contatos>"; doc.loadxml(xmldata); doc.save("c:\\temp\\dados.xml");

Criando um XML Parser Em nosso próximo exemplo, iremos criar um Parser, ou seja, um analisador para percorrer todo o arquivo XML e apresentar o seu conteúdo de uma maneira mais amigável. Diferente do exemplo anterior que simplesmente mostramos todo o conteúdo por meio da propriedade InnerText, vamos analisar cada elemento e apresenta-lo juntamente com o seu conteúdo. Substitua novamente o código do seu botão pelo que está sendo mostrado logo abaixo: XmlDocument doc = new XmlDocument(); doc.load("c:\\temp\\contatos.xml"); // contador de registros lidos int i = 0; // após carregar o arquivo, vamos começar a leitura // pelo primeiro nó do vetor ChildNodes, ou seja, pelo nó <CONTATOS> // do nosso documento apresentado no começo do artigo XmlNode root = doc.childnodes[1]; foreach (XmlNode xmlnode in root.childnodes) i++; textbox1.appendtext("lendo nó "+i.tostring()+"-"+xmlnode.name); textbox1.appendtext("\n"); // agora vamos pegar os NOS filhos de <CONTATO> e seus valores foreach (XmlNode texto in xmlnode.childnodes) textbox1.appendtext(texto.name+"="+texto.firstchild.value); textbox1.appendtext("\n"); Após a execução da rotina acima observe que o cnteúdo apresentado já está bem diferente do que foi visto em nosso primeiro exemplo. Isso porque fizemos uma leitura detalhada em todos os nós do nosso documento.

Trabalhando com XMLReader e XMLWriter O namespace System.Xml contém duas classes abstratas XMLReader e XMLWriter que já realizam o Parser de arquivos XML quer sejam Streams ou XmlDocument. A partir delas nós poderemos herdar nossas próprias classes e então realizar nossas customizações ou então usar as classes já herdadas XmlTextReader e XmlTextWriter para o fácil acesso ao conteúdo de um documento XML. No nosso próximo exemplo criaremos uma página WEB para exibir o conteúdo de arquivos XML. Abra o Visual Studio 2005 e crie um novo projeto Web em: File New Web Site. Selecione o Template ASP.NET Web Site conforme figura abaixo: No evento OnLoad digite o código abaixo para carregar um arquivo XML. private void loadxml() XmlTextReader reader = new XmlTextReader(@"c:\temp\contatos.xml"); String xmldata = ""; while (reader.read()) switch (reader.nodetype) case XmlNodeType.Element: xmldata += "<" + reader.name; while (reader.movetonextattribute()) xmldata += reader.name + " = " + reader.value; xmldata += "> <br>"; break; case XmlNodeType.Text: xmldata += reader.value + "<br>"; break; case XmlNodeType.EndElement: xmldata += "</" + reader.name + ">"; break; Response.Write(xmlData); protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) loadxml(); No exemplo acima, criamos um método loadxml para realizar a carga do arquivo. Usando a classe XMLTextReader conseguimos percorrer todos os nós encontrados e de

acordo com tipo de nó identificado realizamos a exibição dos valores. Vejamos agora uma utilização da classe XmlTextWriter. private void savexml() XmlTextWriter wr = new XmlTextWriter(@"c:\temp\contatos.xml", System.Text.Encoding.UTF8); wr.formatting = Formatting.Indented; // acrescenta a linha <?xml version?> wr.writestartdocument(true); // especificação do xml wr.writedoctype("contatos", "", "", ""); wr.writecomment("agenda de contatos"); // criação do root e valores wr.writestartelement("contatos"); wr.writestartelement("contato"); wr.writeelementstring("nome", "Mario Andrade"); wr.writeelementstring("email", "mario@yahoo.com.br"); wr.writeelementstring("fone", "5555-5555"); wr.writeendelement(); wr.writeendelement(); // finaliza o documento wr.flush(); wr.close(); No exemplo acima geramos um documento XML sem utilização do método Save apresentado no começo do artigo. Com alguns métodos básicos tais como: WriteStartElement e WriteElementString criamos o nosso arquivo e o deixamos formatado de acordo com a apresentação do quadro abaixo: <?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE contatos PUBLIC "" ""[]> <!--Agenda de contatos--> <contatos> <contato> <nome>mario Andrade</nome> <email>mario@yahoo.com.br</email> <fone>5555-5555</fone> </contato> </contatos> Em nosso último exemplo, usaremos a classe DataSet para ler e gerar arquivos XML a partir de uma base de dados. Usando o banco de dados Northwind que acompanha o SQL Server, faremos um SELECT na tabela PRODUCTS e em seguida iremos gerar o nosso arquivo XML a partir do DataSet que já estará populado. private void savexmldb() SqlConnection conn = new SqlConnection("user id=sa;pwd=;initial catalog=northwind;data source=localhost"); conn.open(); SqlDataAdapter da = new SqlDataAdapter("select ProductId, ProductName from products"); DataSet ds = new DataSet(); da.fill(ds, "Temp");

ds.writexml(@"c:\temp\produtos.xml", XmlWriteMode.IgnoreSchema); Observe que no exemplo acima usamos o método Fill da classe SqlDataAdapater para popular o nosso DataSet. Usando o método WriteXml salvamos todo o conteúdo do DataSet para uma arquivo XML. Esse método recebe no seu segundo parâmetro um valor do tipo XmlWriteMode que poderá ser: DiffGram: Esse formato de arquivo é usado implicitamente para troca de dados com um serviço do tipo WebService. Pois os valores são serializados para depois serem transferidos, o que gerante um bom desempenho na transferência. IgnoreSchema: Esse é o valor padrão. Neste caso apenas o conteúdo, ou seja, os dados sem as informações do Schema como tipos de dados, tamanhos e nome de campos serão transferidas. XML. WriteSchema: Tanto os dados como a estrutra será gerada dentro do arquivo Agora que geramos o arquivo em disco, vamos fazer a leitura do conteúdo salvo para dentro do DataSet. Acompanhem o exemplo abaixo e vejam como é simples usar um DataSet para capturar e apresentar o conteúdo de um arquivo XML. Adicione um DataGrid a sua página principal e implemente o código que se encontra logo abaixo: private void loadxmldb() DataSet ds = new DataSet("Temp"); ds.readxml(@"c:\temp\produtos.xml"); GridView1.DataSource = ds; GridView1.DataBind(); protected void Page_Load(object sender, EventArgs e) if (!IsPostBack) loadxmldb();

Após a execução do método loadxmldb sua página deverá estar de acordo com a figura abaixo: Conclusão Nesse artigo podemos entender porque o XML é o preferido padrão de comunicação entre as aplicações. Com ele você não precisa ficar lendo trechos de um arquivo de texto para extrair informações como acontece diariamente na troca de mensagens entre os arquivos de Remessa e Retorno de Bancos. Um outro motivo é a clareza com o que as informações nos são apresentadas. De cara você detecta logo do que se trata o arquivo sem a necessidade de um documento para detalhar cada conjunto de dados. Vimos que XML DOM é uma boa escolha para representar um arquivo XML na memória. Com essa classe podemos ler e gerar documentos XML. Um outro detalhe importante do artigo foi verificar-mos que dento do namespace System.XML podemos contar com a ajuda das classes XmlTextReader e XmlTextWrite para realizar a análise desses arquivos. E por último vimos como é simples utilizar DataSet para exibição e geração de arquivos. Renato Matos é Consultor Borland em SP. Trabalha com Delphi desde a sua primeira versão. Atualmente participa em projetos com as Ferramentas de ALM Borland e Desenvlvimento Code Gear. Você pode entrar em contato pelo email renato.matos@borland.com