Xml em java

10 respostas
paulofernandesjr

essa forma esta correta para gerar um xml?

/**
 * classe responsavel por gerar um xml
 * @author Paulo
 *
 */
public class JavaToXML {
	
	public final static String RAIZ_XML = "Raiz";
	public final static String NO_XML = "No";
	public final static String DEFINICAO_XML = "<?xml version=\"1.0\"?>";

	public static void main(String[] args) {
		System.out.println(DEFINICAO_XML);  
		System.out.println("<" + RAIZ_XML + ">");  
		for (int i = 0; i < 10; i++) {
			String s = (i%2==0) ? "M" : "F";
			System.out.println("  <" + NO_XML +">");
			System.out.println("       <nome>nome " + i +"</nome>");
			System.out.println("       <idade>" + i*3 +"</idade>");
			System.out.println("       <sexo>" + s +"</sexo>");
			System.out.println("  </" + NO_XML +">");
		}
		System.out.println("</" + RAIZ_XML + ">");  
	}

}

10 Respostas

doug

Olá

Não é a melhor forma, existe outras mais fácil, tais como:
    Sax
    Xtream
    JDom

Esses são os mais em evidência nos foruns… eu gosto mais
do sax, por que jé é nativo do java 1.5…
Tem vários artigos, segue um dos link. Aqui no guj
tem uma apostila do Guilherme, só que nao achei ela.

Qualquer dúvidas pode mandar e-mail… que mando um exemplo de parse e de criação do xml.

Espero ter ajudado
Flwss

erdanielli

Eu particularmente sou fã do XStream. Depois de fazer o download do JAR e colocar no classpath do projeto, seu código poderia ficar assim:

import com.thoughtworks.xstream.XStream;

public class XmlComXStream {
	public static void main(String[] args) {
		Pessoa pessoa = new Pessoa("Alfredo", 40, 'M');
		XStream xstream = new XStream();
		xstream.alias("pessoa", Pessoa.class);
		xstream.toXML(pessoa, System.out);
	}
}

class Pessoa {
	String nome;
	int idade;
	char sexo;

	Pessoa(String nome, int idade, char sexo) {
		this.nome = nome;
		this.idade = idade;
		this.sexo = sexo;
	}
}

Não perca tempo escrevendo XML na mão. Uma olhadinha no Two minute tutorial vai te convencer disso.

Abraço!

T

paulofernandesjr:
essa forma esta correta para gerar um xml?

System.out.println(" <nome>nome " + i +"</nome>");

Se o nome contiver algum caracter que é inválido no XML (por exemplo, um “<” ou aspa ou “>”), então você vai ter problemas.
Dentro da medida do possível, não monte XML na mão porque pode ter problemas com esse tipo de coisas.
Use os pacotes que lhe recomendaram.

paulofernandesjr

Achei bem legal esse xstream mas o xml não precisa de um cabeçalho?

peczenyj

paulofernandesjr:
Achei bem legal esse xstream mas o xml não precisa de um cabeçalho?

O cabeçalho é opcional. Pode haver uma opção pro XStream criar esse cabeçalho mas não lembro exatamente como: de uma olhada na documentação.

paulofernandesjr

pelo que entendi, acho que não dá não

http://xstream.codehaus.org/faq.html#XML

mas eles mesmo dizem para fazer assim

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;

import com.thoughtworks.xstream.XStream;

public class XmlComXStream {
	private static final String DEFINICAO_XML = "<?xml version=\"1.0\"?>\n";

	public static void main(String[] args) throws IOException {
		Pessoa pessoa = new Pessoa("Alfredo", 40, 'M');
		XStream xstream = new XStream();
		xstream.alias("pessoa", Pessoa.class);
		File arquivo = new File("teste.xml");
		if ( arquivo.createNewFile() ) {
			Writer escreve = new FileWriter(arquivo);
			escreve.write(DEFINICAO_XML);
			xstream.toXML(pessoa, escreve);
		} else {
			System.out.println("nao criou o arquivo");
		}
		
	}
}

class Pessoa {
	String nome;
	int idade;
	char sexo;

	Pessoa(String nome, int idade, char sexo) {
		this.nome = nome;
		this.idade = idade;
		this.sexo = sexo;
	}
}
VanHelsing

Tbm estou tentando gerar um XML.

Só uma duvida (de iniciante mesmo) :

A Classe Pessoa nao precisa implementar SERIALIZABLE?
Para que meu XML fique correto?

:smiley:

erdanielli

Para fins de serialização XStream, não. Confira no FAQ.

paulofernandesjr

Eu acho que não porque o objetivo é gerar um xml e não “abrir” o objeto em outro local, quando for carregar o xml, você terá que criar novos objetos…

eu sou iniciante, se eu falar besteira, por favor me corrijam!

abraço

VanHelsing

Blz… Por isso que naum tava dando certo…

Vlw !!! :thumbup: :thumbup:

Criado 25 de fevereiro de 2009
Ultima resposta 26 de fev. de 2009
Respostas 10
Participantes 6