Fala Galera …
Por favor, será que alguém poderia mandar um fonte exemplo de como gerar um XML ??
Obrigaduuuu
Fala Galera …
Por favor, será que alguém poderia mandar um fonte exemplo de como gerar um XML ??
Obrigaduuuu
[code]/*
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)