Java e Xml


Depois de palestrar no Flisol, consegui identificar alguns pontos que as pessoas que estão aprendendo(ou interessadas em aprender) Java não sabem ou tem dúvidas. Por esse motivo, a partir de agora farei alguns posts visando desmistificar conceitos básicos, mas que muitos ainda não sabem.

Vamos começar hoje com o XML. A Wikipédia diz que o XML (eXstensible Markup Language) é uma recomendação da W3c para gerar linguagens de marcação para necessidades especiais. Uma frase muito bonita, mas que acredito que não tenha explicado muita coisa né? Então vamos ver uma utilidade do XML na prática.

Vou começar mostrando um exemplo de um XML. Para seguir esse tutorial é preciso usar a API XStream Suponhamos que quero guardar as informações (Nome, Cpf e Rg) de uma Pessoa. Posso não querer usar um Banco de Dados. Eis que surge o XML. Veja como ficaria:
 XML |  copy code |? 
1
2
<Pessoa>
3
    <nome>Flávio Mendes</nome>
4
    <cpf>111.111.111-11</cpf>
5
    <rg>12345-67 SSP/DF</rg>
6
</Pessoa>
7
Como deve ter observado acima, o XML deve ser auto-explicativo. Ou seja, temos a tag que indica que entramos na Pessoa. Dentro dela, temos , e respectivamente.

Agora você pergunta: "Como isso vai me ajudar?". Bom, esse Xml pode ser tornar um objeto do tipo Pessoa para que você possa manipulá-lo no Java. Veja abaixo:

Classe Pessoa:

 Java |  copy code |? 
01
02
public class Pessoa {
03
	private String nome;//temos o atributo nome
04
	private String cpf;//atributo cpf
05
	private String rg;//atributo rg
06
 
07
	/** Getters e Setters*/
08
	public String getNome() {
09
		return nome;
10
	}
11
	public void setNome(String nome) {
12
		this.nome = nome;
13
	}
14
	public String getCpf() {
15
		return cpf;
16
	}
17
	public void setCpf(String cpf) {
18
		this.cpf = cpf;
19
	}
20
	public String getRg() {
21
		return rg;
22
	}
23
	public void setRg(String rg) {
24
		this.rg = rg;
25
	}
26
}
27

Como deve ter visto, minha classe Pessoa segue a mesma estrutura do XML.

Agora vamos aprender a manipular os dois:
 Java |  copy code |? 
01
02
public class TesteXml {
03
	public static void main(String[] args) {
04
		XStream xStream = new XStream();//instancia um objeto do tipo XStream
05
		Pessoa pessoa = (Pessoa) xStream.fromXML("<Pessoa>" +//o comando fromXml transforma o xml em um objeto
06
				"<nome>Flávio Mendes</nome>" +
07
				"<cpf>111.111.111-11</cpf>" +
08
				"<rg>12345-67 SSP/DF</rg>" +
09
				"</Pessoa>");
10
		System.out.println(pessoa.getNome());//imprimindo os valores para conferir
11
		System.out.println(pessoa.getCpf());//imprimindo os valores para conferir
12
		System.out.println(pessoa.getRg());//imprimindo os valores para conferir
13
 
14
		String xml = xStream.toXML(pessoa); // o comando toXml transforma o objeto em um Xml
15
 
16
		System.out.println(xml);//imprimindo o xml para conferir
17
	}
18
}
19

Como deve ter visto, o Xml é muito simples. Agora é só usar a lógica e aplicá-lo onde for necessário.
  1. #1 by Maurício Faustino on 30 de Abril de 2010 - 13:59

    XStream é excelente
  2. #2 by Max Mustang on 3 de Maio de 2010 - 19:50

    opa, blz cara?
    só umas pergunta.. pra onde o xml é exportado?
    em qual pasta ele fica depois do teste?

    abraço
  3. #3 by Flávio J. Mendes on 4 de Maio de 2010 - 9:00

    Veja bem Max,
    Neste exemplo não salvei o arquivo, apenas armazenei o Xml gerado em uma String. Para salvá-lo em um arquivo deve-se usar a classe File para gerar um arquivo texto.
(não será publicado)