Cadastre-se Revistas DevMedia Cursos
 

Space de FLáVIO ROBERTO SANTOS
Busca Autor


Últimas 20 atualizações de FLáVIO ROBERTO SANTOS

Artigo - Manipulando arquivos XML em Java

Manipulando arquivos XML em Java

 

Olá galera!!

 

Dessa vez trago para vocês um guia rápido com as principais funcionalidades da API Java 1.5 para manipular arquivos XML. Gostaria inicialmente de deixar claro que este tutorial não tem o propósito de ensinar conceitos de XML. Portanto, nos próximos parágrafos estarei assumindo que você já tem conhecimento sobre o referido tópico. Esse artigo é dividido em quatro seções. A primeira mostra um mapeamento entre elementos de um arquivo XML e classes em Java. A segunda ensina como transformar um arquivo XML em disco num objeto de manipulação em Java (parsing). Vamos fazer uma breve explanação sobre os principais métodos de acesso a dados já em memória na seção 3. E, finalmente, iremos mostrar como fazer consulta a documentos XML na seção 4.

 

Representação de elementos XML

A fim de facilitar o entendimento desta seção, vamos utilizar o documento XML abaixo e ilustrar a partir dele como é feita a representação de cada elemento após ele ser carregado em memória através do parsing (explicado na seção seguinte).

 

<html>

                <head>

                               <title>Título</title>

                </head>

 

                <body onload="javascript:alert('Olá!')">

                               <p>Olá Mundo!</p>

                </body>

</html>

Listagem 1Exemplo de um arquivo XML.

 

Todo o documento acima e informações de controle interno como codificação do texto são mapeados e acessados através da interface org.w3c.dom.Document. Ou seja, idealmente após fazer o parsing teremos um objeto que implementa essa interface, que é a visão mais “macro” de um arquivo XML em memória.

 

Numa visão mais detalhada do arquivo, temos a introdução de conceitos como Node, Element, Attr e Text, todos do pacote org.w3c.dom. Tanto o elemento Document quanto o Element, Attr e Text herdam da interface Node, ou seja, todos esses elementos são vistos como sendo nós da árvore XML.

 

Parsing

Uma das maneiras de se realizar o parsing de um arquivo XML é através do método parse(File f) da classe javax.xml.parsers.DocumentBuilder. Veja o trecho de código abaixo que mostra como se obter um Document através de um arquivo em disco:

 

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

dbf.setNamespaceAware(false);

DocumentBuilder docBuilder = dbf.newDocumentBuilder();

Document doc = docBuilder.parse(new File("arquivo.xml"));

Listagem 2Carregando um documento de um arquivo.

 

Para que o parsing suporte namespaces é necessário mudar o valor de false para true na linha em vermelho no código acima. Observe que o conceito e a utilização de namespaces foge ao escopo deste documento.

 

Agora que estamos com um Document em mãos, vamos mostrar como navegar através dos seus elementos, modificar seu conteúdo e gravá-lo em disco.

 

Métodos de manipulação de elementos

Além de todos os métodos definidos pela interface Node, a interface Document provê métodos para criação de atributos (Attr), elementos (Element) e textos (Text). Veja um resumo de como fazer isso:

  1. createAttribute(String name) – Cria e retorna um atributo que pode ser inserido em qualquer elemento do tipo Element através do método setAttributeNode(Attr newAttr).
  2. createElement(String tagName) – Cria e retorna um Element que pode ser inserido em outros Elements através do método appendChild(Node newChild) da interface Node.
  3. createTextNode(String data) – Cria e retorna elementos do tipo Text que podem ser inseridos através do mesmo appendChild citado acima em elementos do tipo Element. 

A interface Document também possui um método getDocumentElement para obtenção do elemento raiz do XML. Tendo esse elemento do tipo Element em mãos, vamos mostrar um exemplo de código usando o XML da Listagem 1.

 

import java.io.IOException;

import java.io.StringReader;

 

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

 

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

import org.xml.sax.InputSource;

 

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
17/10/2006 07:48:00





Artigo - Usando banco de dados XML em Java com o eXist

Usando banco de dados XML em Java com o eXist

 

Neste meu primeiro artigo para o portal vou tratar de um tópico bastante falado na área da computação: armazenamento de documentos XML.

 

É bastante comum encontrarmos sistemas que utilizam XML para armazenar configurações, logs, ou ainda para representar mensagens numa comunicação remota (como é o caso do protocolo SOAP - Simple Object Access Protocol - usado pelos tão famosos WebServices).

 

A ferramenta eXist trata exatamente de armazenar e consultar informações em XML (apesar de ela suportar arquivos binários, não iremos tratar disto neste artigo) de forma eficiente e simples. Vamos mostrar como instalar o software e executar as operações básicas de inserção, remoção e recuperação de documentos utilizando uma API em Java.

 

Esse artigo foi escrito baseado na versão 1.0 disponível no link http://exist-db.org/index.html#download.

 

O eXist é distribuído de duas formas: um JAR executável ou um WAR. Se optar pelo WAR você precisará de um container Web para fazer a instalação. No entanto, o JAR executável já vem com o Jetty (http://jetty.mortbay.org) como container e você não precisará se preocupar com instalações adicionais.

 

Como o deploy no container depende do servidor que está sendo usado (Tomcat, Jetty ou outro), iremos mostrar apenas como instalar o JAR executável:

  1. Abra um console (DOS ou Terminal se for Windows ou Linux respectivamente);
  2. Entre no diretório onde você salvou o JAR do eXist;
  3. Digite java -jar eXist-[versão].jar;
  4. Prossiga a instalação com o Wizard que irá se abrir.

Pronto, já temos o banco de dados instalado!!

 

Para iniciar e parar o banco, utilize os scripts startup e shutdown, respectivamente, que estão no diretório bin da instalação do eXist. Se você observar, existem dois arquivos para cada um desses scripts no diretório bin: o sh é para o Linux e o bat é para rodar no Windows.

 

Antes de mexermos com código em Java, é importante saber o conceito de coleções e recursos adotado pelo eXist.

 

O termo Collection é utilizado para se referenciar a um diretório de armazenamento de documentos XML. Essas coleções são organizadas de forma hierárquica e um exemplo pode ser visualizado na figura abaixo (Figura 01).

 

eXistFig01.JPG

Figura 01.  Estrutura hierárquica de um collection.

 

O exemplo mostrado na figura define quatro coleções, sendo estas: /raiz, /raiz/teste, /raiz/filho e /raiz/filho/arq (a barra “/” é usada como delimitadora de nível). Note também que duas coleções (/raiz/teste e /raiz/filho) possuem XMLResources, que são os próprios documentos XML que são armazenados nas coleções.

 

Tendo estes conceitos em mente e assumindo que o banco de dados está executando, mostraremos como fazer as operações básicas utilizando a API em Java que é distribuída junto com o eXist.

 

Vamos criar uma classe que insere um documento numa coleção do banco. (Por motivos de simplificação, vou me referir a EXIST_DIR para designar o diretório de instalação do eXist.)

 

import java.io.File;

 

import org.xmldb.api.DatabaseManager;

import org.xmldb.api.base.Collection;

import org.xmldb.api.base.Database;

import org.xmldb.api.modules.CollectionManagementService;

import org.xmldb.api.modules.XMLResource;

 

public class InsercaoExemplo {

    public final static String URI =

                        "xmldb:exist://localhost:8080/exist/xmlrpc/db";

 

    public static void main(String args[]) throws Exception {

        if(args.length < 2) {

       &

...
Exibição do post interrompida. Para ler conteúdo completo, clique aqui
18/09/2006 13:37:00





Artigo - Boas Vindas a Flávio Roberto Santos

Boas Vindas a Flávio Roberto Santos

 

Olá pessoal!!

Estou me juntando à equipe da Java Magazine para escrever artigos e passar aos leitores o conhecimento sobre as mais novas tecnologias relacionadas à Java.

Porém, neste primeiro artigo irei apenas me apresentar para vocês.

 

Meu nome é Flávio e tenho Java como minha primeira linguagem de programação há 3 anos quando ingressei na universidade em 2003. Sou graduando do curso de Ciência da Computação na Universidade Federal de Campina Grande (UFCG) cursando atualmente o 7º período e um dos administradores do Grupo de Usuários Java de Campina Grande (CGJug).

 

Nesse período venho trabalhando com mais ênfase nas áreas de Sistemas Distribuídos e programação para Internet (Cliente-Servidor e Peer-to-peer). Entretanto, utilizo bastante Java para desenvolver jogos. Algumas das minhas produções nessa área são: JBomber (semelhante ao BomberMan da HudsonSoft), Tetris, Campo Minado, Snake e Line4.

 

Trabalho com gerência e implantação automática de sistemas no Laboratório de Sistemas Distribuídos (LSD) da UFCG e atualmente sou estagiário da Hewlett-Packard (HP Brasil) em Porto Alegre.

 

Bom, e finalmente gostaria de agradecer a todos pela oportunidade e desde já os convido a acompanhar meus artigos nos próximos meses.

 

Muito obrigado e até breve!

-->">
11/09/2006 07:24:00





 

Flávio Roberto Santos (flavio@cgjug.com.br), 22 anos, é graduando do curso de Ciência da Computação na Universidade Federal de Campina Grande (UFCG) e é desenvolvedor Java há 3 anos, atualmente fazendo estágio na HP Brasil em Porto Alegre. É também integrante do grupo administrativo do Grupo de Usuários Java de Campina Grande (CGJug) e bolsista do Laboratório de Sistemas Distribuídos (LSD) na UFCG.
Arquivo de atualizações
 2006

Estatísticas do Autor:
Número de posts: 3
Características dos posts deste autor:
Conteúdo:
Utilidade:
6 4
 
DevMedia Group - Tel: (21) 3382-5038 - www.devmedia.com.br
Todos os Direitos Reservados a DevMedia Group