Gerar um XML

Fala Galera …

Por favor, será que alguém poderia mandar um fonte exemplo de como gerar um XML ??

Obrigaduuuu

[code]/*

  • Created on 09/10/2003
  • Criado Por Gustavo Guilherme BacK - gustavo_back@hotmail.com
  • Projeto AgroDados
  • Instituto CEPA/SC
    */

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import com.icepa.back.datamanagers.Repository;

/**

  • @author back
    */
    public class TesteMontarXML extends Repository{

    static Document doc;

    public static void main(String[] args) {

     try{
    

//gera o Document
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.newDocument();

//adiciona os elementos e atributos
Element agrodados = doc.createElement("agrodados");
Element cadastro = doc.createElement("cadastro");

	Element tpm;
	Element tpma;
	
	cadastro.setAttribute("date", "1999-100-10");
	
	tpm = doc.createElement("Grupo");
	tpm.setAttribute("cod", "12");
	tpm.appendChild(doc.createTextNode("nomeGrupo"));
	cadastro.appendChild(tpm);
	
	tpm = doc.createElement("Subgrupo");
	tpm.setAttribute("cod", "12");
	tpm.appendChild(doc.createTextNode("nomeSubgrupo"));
	cadastro.appendChild(tpm);
	
	tpm = doc.createElement("Assunto");
	tpm.setAttribute("cod", "100");
	tpm.appendChild(doc.createTextNode("NomeAssunto"));
	cadastro.appendChild(tpm);

	tpm = doc.createElement("periodicidade");
	tpm.setAttribute("cod","1000");
	tpm.setAttribute("name", "theName");
	tpma = doc.createElement("Lay_out");
	tpma.appendChild(doc.createTextNode("formatoLayOut"));
	tpm.appendChild(tpma);
	cadastro.appendChild(tpm);		
			
	agrodados.appendChild(cadastro);
	
	doc.appendChild(agrodados);

//Realiza a saida do XML para o console
Transformer trans = TransformerFactory.newInstance().newTransformer();
trans.setOutputProperty(OutputKeys.INDENT, "yes");
trans.transform(new DOMSource(doc), new StreamResult(System.out));

	System.exit(0);

	}catch(Exception ex){
		ex.printStackTrace();
	}	
}

}
[/code]

Este utiliza a API DOM que vem no JSDK 1.4.1.

Gustavo Guilherme BacK

Back.

Entaum … obrigado pelo exemplo …
Mas agora estou com um gde problema.

Estou começando em java.
e qdo eu compilo o fonte que vc mandou, o import com.icepa.back.datamanagers.Repository; esta dando erro…
Sabe me dizer por que ???

Esta era uma classe de teste. Ela esta extendendo a classe Repository. Para rodar basta você deletar a linha, que importa uma outra classe…

import com.icepa.back.datamanagers.Repository;

e deletar o trecho

extends Repository

que faz com que minha classe extenda a Repository.

Gustavo Guilherme BacK

Back…

Desculpe a falta de conhecimento …
Mas … Onde ele cria o XML ?? ou apenas imprime em tela ??

//Realiza a saida do XML para o console Transformer trans = TransformerFactory.newInstance().newTransformer(); trans.setOutputProperty(OutputKeys.INDENT, "yes"); trans.transform(new DOMSource(doc), new StreamResult(System.out));

O XML fica na memória. Altere o código na última linha do snippet acima, passando, por exemplo, a instância de um java.io.FileWriter para o construtor do StreamResult.

Daniel …

Tentei alterar a saida, mas ta dando pau …

Como vc alteraria ???

Obrigado … e desculpe … mas estou começando …

Pedindo licença para o Guilherme para alterar o código…

/*
* Created on 09/10/2003
*
* Criado Por Gustavo Guilherme BacK - gustavo_back@hotmail.com
* Alterado por Daniel Quirino Oliveira - daniel@grad.icmc.usp.br
* Projeto AgroDados
* Instituto CEPA/SC
*/

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.File;
import java.io.FileWriter;

import org.w3c.dom.Document;
import org.w3c.dom.Element;


/**
* @author back
*/
public class TesteMontarXML{
   
   static Document doc;
   
   public static void main(String[] args) {
   
      try{
      
//gera o Document
      DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
      DocumentBuilder builder = factory.newDocumentBuilder();
      doc = builder.newDocument();

//adiciona os elementos e atributos      
      Element agrodados = doc.createElement("agrodados");
      Element cadastro = doc.createElement("cadastro");
      
      Element tpm;
      Element tpma;
      
      cadastro.setAttribute("date", "1999-100-10");
      
      tpm = doc.createElement("Grupo");
      tpm.setAttribute("cod", "12");
      tpm.appendChild(doc.createTextNode("nomeGrupo"));
      cadastro.appendChild(tpm);
      
      tpm = doc.createElement("Subgrupo");
      tpm.setAttribute("cod", "12");
      tpm.appendChild(doc.createTextNode("nomeSubgrupo"));
      cadastro.appendChild(tpm);
      
      tpm = doc.createElement("Assunto");
      tpm.setAttribute("cod", "100");
      tpm.appendChild(doc.createTextNode("NomeAssunto"));
      cadastro.appendChild(tpm);

      tpm = doc.createElement("periodicidade");
      tpm.setAttribute("cod","1000");
      tpm.setAttribute("name", "theName");
      tpma = doc.createElement("Lay_out");
      tpma.appendChild(doc.createTextNode("formatoLayOut"));
      tpm.appendChild(tpma);
      cadastro.appendChild(tpm);      
            
      agrodados.appendChild(cadastro);
      
      doc.appendChild(agrodados);
      
//Realiza a saida do XML para o console
      Transformer trans = TransformerFactory.newInstance().newTransformer();
      trans.setOutputProperty(OutputKeys.INDENT, "yes");
      trans.transform(new DOMSource(doc), new StreamResult(new FileWriter(new File("c:/teste.xml")))); // vai gerar um arquivo chamado teste.xml na raiz do drive C: do Windows. 

      System.exit(0);

      }catch(Exception ex){
         ex.printStackTrace();
      }   
   }
}

Galera … Para gerar o XML direto com o encondig ISO-8859-1", é da seguinte maneira:

// Coloque conforme o nome de suas variáveis
Transformer xformer = TransformerFactory.newInstance().newTransformer();
// Set the public and system id
xformer.setOutputProperty(OutputKeys.METHOD, “xml”);
xformer.setOutputProperty(OutputKeys.ENCODING, “ISO-8859-1”);
xformer.setOutputProperty(OutputKeys.INDENT, “yes”);

Abraços … :o) :smiley: