Serializar objetos e gravar em xml

2 respostas
javaredfoot

Pessoal, estou com dificuldades em fazer a gavação de dados em xml, na verdade tenho que fazer um crud para manipular em xml, gostaria de saber quais caminhos deverei seguir...., tenho que criar um cadastro simples de cidades, essa classe que fiz está no caminho certo ou tenho que mudar...

package avaliacaoTurma02;

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.TreeMap;

public class DaoXML {
	
	private ArrayList dados = new ArrayList();
	
	public void gravaDados() {
		try {
			FileOutputStream fos = new FileOutputStream("dados.xml");
			XMLEncoder en = new XMLEncoder(fos);
			en.writeObject(dados);
			en.close();
			fos.close();			
		} catch (Exception e){
			System.out.println("Erro: " + e.getMessage());	
		}
	}
	public void abreDados(){	
		try{
			FileInputStream fis = new FileInputStream("dados.xml");
			XMLDecoder de = new XMLDecoder(fis);
			dados = (ArrayList)de.readObject();
			de.close();
			fis.close();
		} catch (Exception e){
			System.out.println("Erro: " + e.getMessage());
		}
	}
	
}

Até mais.......

2 Respostas

davidbuzatto

Já ouviu falar da API XStream?
http://xstream.codehaus.org/

javaredfoot

Bom esse é a classe de aplicação ....

package avaliacaoTurma02;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

import javax.swing.JOptionPane;

public class CadastroCidades {
		
	private static String leTexto(String msg, String valor){
		String retorno = null;
		while ((retorno == null) || (retorno.trim().length()==0)){
			retorno = JOptionPane.showInputDialog(msg, valor);
		}
		return retorno;
	}
	
	private static int leInteiro(String msg, String valor){
		String strNumero = null;
		int numero=0;
		boolean numeroValido=false;
		while (!numeroValido){
			try {
				strNumero = JOptionPane.showInputDialog(msg, valor);
				numero= Integer.parseInt(strNumero);
				numeroValido=true;
			} catch (NumberFormatException e){
				JOptionPane.showMessageDialog(null, "Valor informado: " + strNumero + " não é um numero valido");
				numeroValido=false;
			}
		}
		return numero;
	}
		
		private static int leInteiro2(String msg, String valor){
			String strNumero = null;
			int numero=0;
			boolean numeroValido=false;
			while (!numeroValido){
				strNumero= JOptionPane.showInputDialog(msg, valor);
				if ((strNumero!=null) && (strNumero.trim().length()>0) && (strNumero.matches("\d*"))){
					numero= Integer.parseInt(strNumero);
					numeroValido=true;
				}
			}
			return numero;
		}
		
	public static void main(String[] args) {
		
		DaoXML dados = new DaoXML();

		String[] opcoes = {"Novo", "Altera", "Remove", "Listar", "Sai"};
		
		int contador = 0;
		//Enquanto nao sair Loop
		while (true){
			String nome, uf;
			int codigo;
			//Le opcao de cadastro
			int opcao = JOptionPane.showOptionDialog(null, "Escolha a opção de cadastro",
					"Menu de cadastro",0, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[4]);
			switch (opcao){
			//Se novo
			case 0:
				//Le dados
				nome = leTexto("Entre com o nome da cidade !",null);
				uf = leTexto("Entre com o estado", null);
				if ((nome == null) || (nome.trim().length()== 0)){
				
				}
				dados.gravaDados(cidade);
				break;
			
			//Se altera	
			case 1:
			
				break;
				
			//Se remove
			case 2:
				
				break;
				
			//Se lista
			case 3:
				
				
			//Se sair
			case 4:
				String[] opcaoSaida = {"Sim", "Não"};
				//Pede confirmacao de saidaE
				int opcaoSaida1 = JOptionPane.showOptionDialog(null, "Deseja realmente sair ?",
						"Confirmação de saía",0, JOptionPane.QUESTION_MESSAGE, null, opcaoSaida, opcaoSaida[1]);
				//Se confirma sai
				if (opcaoSaida1 == 0) System.exit(0);
				break;
			}
	}
		
	}
}
Criado 28 de junho de 2009
Ultima resposta 28 de jun. de 2009
Respostas 2
Participantes 2