Pessoal, estou fazendo um projeto no qual preciso coletar algumas informações do meu banco de dados e gerar um arquivo que seja em xml…alguém tem alguma noção de como posso fazer isso na minha aplicação SE…
Artigos do GUJ:
http://www.guj.com.br/article.show.logic?id=144
Tem mais alguns artigos sobre isso, dá uma olha na área de artigos!
muito obrigado, vou ler e fazer alguns ttestes se é isso mesmo que procuro, obrigado pela gentileza .
Olha cara, me ajudaram com isso ontem, e vou te passar uma lista dos principais que me passaram, StaX, SAXParser, XMLBeans, Piccolo, DOM4J, os que cheguei a testar são estes, sendo que o mais rápido para leitura é o StaX e mais fácil para escrita o DOM4J ou XMLBeans da apache.
XStream… sem comentários…
mas acho que o XStream resolve perfeito meu problema, vou detalhar mais…é assim, o software é pra uma clinica médcica, só que o faturamento da clinica deve ser passado pros convenios em um arquivo XML, gerado com os dados de cada fatura…então vou adaptar esse exemplo que tem aqui no fórum que nossa amiga me indicou…e com certeza vou postar aqui essa rotina pois acho que vai ajudar muita gente…
galera please, o link pro donwload desse jar ta dando erro, e aqui no forum nãao esta abrindo, alguem por gentileza sabe onde encontrar ou tem pra me enviar???
A página oficial do XStream é:
O download deve ser feito a partir de:
http://xstream.codehaus.org/download.html
(Veja se você está com problema de acesso a http://repository.codehaus.org/ . Pode ser que algum desinfeliz tenha bloqueado o acesso a esse site no proxy da sua empresa ou faculdade. )
[quote=thingol]A página oficial do XStream é:
O download deve ser feito a partir de:
http://xstream.codehaus.org/download.html
(Veja se você está com problema de acesso a http://repository.codehaus.org/ . Pode ser que algum desinfeliz tenha bloqueado o acesso a esse site no proxy da sua empresa ou faculdade. )
[/quote]
blz amigos, é o core que eu baixo???
nusssaaa não to conseguindo baixar, page not found…por favor alguém poderia me mandar esse arquivo??? no manhanijava@gmail.com???
Aqui to baixando normalmente!
Link direto: http://repository.codehaus.org/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar
Ola amigo
Segue o codigo para gerar XML.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.farzacsystem;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.output.XMLOutputter;
public class GeraXML
{
public GeraXML(){
}
public static void main(String[] args)
{
Element agenda = new Element("Agenda");
//Define Agenda como root
Document documento = new Document(agenda);
//Cria o elemento Contato
Element contato = new Element("Contato");
//Adiciona o atributo id ao Contato
contato.setAttribute("id","123");
//Criando os elementos de contato
Element nome = new Element("nome");
nome.setText("Glaucio Guerra");
Element telefone = new Element("telefone");
telefone.setText("123-456");
Element endereco = new Element("endereco");
endereco.setText("Av. Amaral Peixoto S/N");
Element email = new Element("email");
email.setText("glaucioguerra@gmail.com");
//Adicionando elementos nome, telefone, endereco e email no Contato
contato.addContent(nome);
contato.addContent(telefone);
contato.addContent(endereco);
contato.addContent(email);
//Adicionado o Contato a Agenda
agenda.addContent(contato);
//Classe responsável para imprimir / gerar o XML
XMLOutputter xout = new XMLOutputter();
try
{
//Criando o arquivo de saida
FileWriter arquivo = new FileWriter
(
new File("c:/arquivo.xml")
);
//Imprimindo o XML no arquivo
xout.output(documento, arquivo);
} catch (IOException e)
{
e.printStackTrace();
}
}
}
obrigado amigo, vou tentar modificalo, pra buscar no banco o que quero…depois posto aqui pra ver se ajuda a galera
Galera com o SXtream, como faço pra gerar o arquivo propriamente dito???o nosso amigo ai colocou usando o JDom, mas e com o XStream…tem como gerar o arquivo??
vou postar aqui minhas classes pra vcs me ajudarem.
[code]package convertexml;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import java.util.*;
import com.thoughtworks.xstream.XStream;
import convertexml.acessoBanco.Conexao;
import convertexml.controlacliente.Pessoa;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
/**
*
-
@author Administrator
*/
public class TesteXml {
private Conexao conectaPessoa;
private ArrayList sacola;
XStream xstream = new XStream();
public TesteXml(){
sacola = new ArrayList();
conectaPessoa = new Conexao();
conectaPessoa.conecta();
try{
conectaPessoa.executeSQL("SELECT * FROM tbl_pessoa");
while(conectaPessoa.rs.next())
{
sacola.add
(
new Pessoa
(
conectaPessoa.rs.getString("nome_pessoa"),
conectaPessoa.rs.getString("email_pessoa")
)
);
}} catch (SQLException sqle) {
JOptionPane.showMessageDialog(null, "Não localizou dados ze mane " + sqle );
}
String contatosEmXML = xstream.toXML(sacola);
try
{
//Criando o arquivo de saida
FileWriter arquivo = new FileWriter
(
new File("c:/briguinaldo.xml")
);
} catch (IOException e)
{
e.printStackTrace();
}
System.out.println("\nContatos em XML:");
System.out.println(contatosEmXML);
}//fecha construtor
public ArrayList cargaSacola() //inicia o método carga
{
return sacola;
}//fecha cargasacola
}//fecha classe
[/code]
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package convertexml.controlacliente;
/**
*
-
@author Paulo Manhani
*/
public class Pessoa {
private String nome;
private String email;public Pessoa(String nome, String email)
{
this.nome = nome;
this.email = email;
}//fecha construtorpublic String getNome() {
return nome;
}public void setNome(String nome) {
this.nome = nome;
}public String getEmail() {
return email;
}public void setEmail(String email) {
this.email = email;
}
}//fecha classe
[/code]
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package convertexml;
/**
*
* @author Administrator
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
TesteXml teste = new TesteXml();
}
}
package convertexml.acessoBanco;
/**
*
* @Adaptado por Paulo Manhani
* 09/12/2008
*/
import java.sql.*;
import java.util.ArrayList;
import javax.swing.*;
public class Conexao{
final private String driver = "org.postgresql.Driver";
final private String url = "jdbc:postgresql://localhost:5432/testaXml";
final private String usuario = "postgres";
final private String senha = "mysenha";
private Connection conexao;
public Statement stmt;
public ResultSet rs;
public boolean conecta(){
boolean result = true;
try{
Class.forName(driver);
conexao = DriverManager.getConnection(url, usuario, senha);
} catch (ClassNotFoundException ce) {
JOptionPane.showMessageDialog(null, "Driver não localizado: " + ce);
result = false;
} catch (SQLException sqle){
JOptionPane.showMessageDialog(null, "Deu erro na Conexão /n com a fonte de dados " +sqle);
result = false;
}
return result;
}
public void desconecta(){
boolean result = true;
try{
conexao.close();
} catch (SQLException sqle) {
JOptionPane.showMessageDialog(null, "Não foi possível"+
"fechar o Banco de Dados " +sqle.getMessage());
result = false;
}
}
public void executeSQL(String sql){
try{
stmt = conexao.createStatement(ResultSet.CONCUR_READ_ONLY, ResultSet.TYPE_SCROLL_SENSITIVE);
rs = stmt.executeQuery(sql);
} catch (SQLException sqle) {
JOptionPane.showMessageDialog(null, "Não foi possível"+
"executar o comando sql " +sqle.getMessage());
}
}
}
até ai tudo bem, ela ta gerando o xml e me mostrando no console…mas e pra gerar de fato o arquivo tipo no exemplo do amigo que utilizou o JDom?
huum, gerar o arquivo ele gera, mas nao escreve nada dentro
Realmente vc so esta criando o arquivo, precisa colocar conteudo nele:
//use BufferedWriter para agilizar a gravação
PrintWriter arquivo = new PrintWriter(new BufferedWriter(new FileWriter("c:/saida.xml")));
//cabeçalho do xml
arquivo.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
arquivo.println(contatosEmXML);
//sempre feche o arquivo ao terminar de gravar
arquivo.close();
ufaaaaaaaaaaaa consegui galera…vou postar somente a classe que alterei pra futuros …
[code]/*
- To change this template, choose Tools | Templates
- and open the template in the editor.
*/
package convertexml;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import java.util.*;
import convertexml.acessoBanco.Conexao;
import convertexml.controlacliente.Pessoa;
import java.io.FileWriter;
import com.thoughtworks.xstream.XStream;
import java.io.BufferedWriter;
import java.io.PrintWriter;
/**
*
-
@author Administrator
*/
public class TesteXml {
private Conexao conectaPessoa;
private ArrayList sacola;
XStream xstream = new XStream();
private static final String DEFINICAO_XML = “<?xml version=\"1.0\"?>\n”;//dados = ponte.executeQuery(“SELECT * FROM empresas”);
public TesteXml(){
sacola = new ArrayList();
conectaPessoa = new Conexao();
conectaPessoa.conecta();
try{
conectaPessoa.executeSQL("SELECT * FROM tbl_pessoa");
while(conectaPessoa.rs.next())
{
sacola.add
(
new Pessoa
(
conectaPessoa.rs.getString("nome_pessoa"),
conectaPessoa.rs.getString("email_pessoa")
)
);
}} catch (SQLException sqle) {
JOptionPane.showMessageDialog(null, "Não localizou dados ze mane " + sqle );
}
String contatosEmXML = xstream.toXML(sacola);
//use BufferedWriter para agilizar a gravação
try{
PrintWriter arquivo = new PrintWriter(new BufferedWriter(new FileWriter("c:/saida.xml")));
//cabeçalho do xml
arquivo.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
arquivo.println(contatosEmXML);
//sempre feche o arquivo ao terminar de gravar
arquivo.close();
}catch(Exception e){}
// System.out.println("\nContatos em XML:");
//System.out.println(contatosEmXML);
}//fecha construtor
public ArrayList cargaSacola() //inicia o método carga
{
return sacola;
}//fecha cargasacola
}//fecha classe
[/code]
Olá Pessoal,
penso que uma forma legal de se gerar um XML
de maneira facil seria usando DOM, trabalhar com o XML por node
bom cada um tem um pensamento certo esse é o meu…
mais é muito interessante o Xtream.
Pessoal estou Começando a trabalhar em um tema de TCC
eu interessado eu fazer sobre aplicação P2P em java.
mais é um tema até que um pouco complicado eim…
se alguém puder ajudar mostrando algum tutorial,
Obrigadão gente
Use um debug, veja como esta chegando sua variavel sacola, onde e como vc monta essa variavel?
Obrigado a todos que contribuiram com esse tópico, fico imensamente grato, pois quando abri esse tópico não tinha nem noção por onde começar, com ajuda e despreendimento de tempo dos companheiros que aqui postaram fui bem sucedido, e esse é um dos motivos que a comunidade java sempre cresce, pois vejo sempre uns auxiliando os outros, o que precisar de mim galera, podem pedir que ajudarei…mais uma vez um muito obrigado.
Ok, boa sote.
Aqui meu está o endereço pois coloquei um tempo atraz
http://www.guj.com.br/posts/list/2094.java#622593
valeu abraços