Gerar um XML

8 respostas
A

Fala Galera …

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

Obrigaduuuu

8 Respostas

B
/*
 * Created on 09/10/2003
 *
 * Criado Por Gustavo Guilherme BacK - [email removido]
 * 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();
		}	
	}
}

Este utiliza a API DOM que vem no JSDK 1.4.1.

Gustavo Guilherme BacK

A

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 ???

B

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

A

Back…

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

Daniel_Quirino_Olive

//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.

A

Daniel …

Tentei alterar a saida, mas ta dando pau …

Como vc alteraria ???

Obrigado … e desculpe … mas estou começando …

Daniel_Quirino_Olive

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

/*
* Created on 09/10/2003
*
* Criado Por Gustavo Guilherme BacK - [email removido]
* Alterado por Daniel Quirino Oliveira - [email removido]
* 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();
      }   
   }
}
A

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:

Criado 15 de outubro de 2003
Ultima resposta 20 de out. de 2003
Respostas 8
Participantes 3