Created
September 28, 2018 20:58
-
-
Save tuxcuiabano/e5d36871f65a028cc54df31443ab24fc to your computer and use it in GitHub Desktop.
Exemplo de criação de arquivo XML com Java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* To change this license header, choose License Headers in Project Properties. | |
* To change this template file, choose Tools | Templates | |
* and open the template in the editor. | |
*/ | |
package criaxml; | |
/** | |
* | |
* @author tuxcuiabano | |
* Retirado do Livro Texto "Tecnologia de Dados para Internet - MACIEL, C, 2018" | |
*/ | |
// Primeiro, adicionam-se as classes de outros pacotes. Por exemplo, | |
// do pacote org.w3c.dom são utilizadas as classes Document e Element | |
// embora todas as classes do pacote sejam importadas com o uso do * | |
import javax.xml.parsers.*; | |
import org.w3c.dom.*; | |
import java.io.FileWriter; | |
import com.sun.org.apache.xml.internal.serialize.*; | |
// Todo código Java é encapsulado por uma classe. | |
public class CriaXML { | |
// Essa é a função que será executada no momento em que o | |
// programa é chamado à execução pela primeira vez. | |
// Existe uma única em todo programa Java, necessariamente. | |
public static void main(String[] args) { | |
// PASSO 1: criar um objeto DocumentBuilderFactory, // que pode ser configurado | |
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); | |
// Algumas funções requerem que suas exceções sejam tratadas, | |
// e uma forma de fazer isso é tentando (try) executá-la com | |
// a possibilidade de capturar (catch) e lançar a exceção em | |
// caso de erro detectado. Esse é o escopo try/catch. | |
// Declaração das variáveis fora do escopo try/catch para | |
// que continuem existindo após o tratamento das exceções. | |
DocumentBuilder db = null; | |
Document doc = null; | |
try { | |
// PASSO 2: criar um DocumentBuilder, que herda a | |
// configuração especificada pelo DocumentBuilderFactory | |
db = dbf.newDocumentBuilder(); | |
// PASSO 3: armazenar em um Document a representação em | |
// árvore de um novo documento XML recebida como retorno | |
doc = db.newDocument(); | |
} catch (Exception e) { | |
System.err.println("Problema na criação da árvore DOM."); e.printStackTrace(); | |
System.exit(1); | |
} | |
// Agora os elementos são criados e vinculados à arvore DOM | |
// O elemento raiz "nome" é criado e vinculado ao documento | |
Element raiz = doc.createElement("nome"); | |
doc.appendChild(raiz); | |
// A nova linha com a identação deve ser anexada, tornando-se | |
// o primeiro nó filho do elemento raiz | |
raiz.appendChild(doc.createTextNode("\n ")); | |
// O elemento do tipo Comment é criado e vinculado à raiz | |
Comment comm = doc.createComment("Exemplo de nome de pessoa."); | |
raiz.appendChild(comm); | |
// A nova linha com a identação deve ser anexada | |
raiz.appendChild(doc.createTextNode("\n ")); | |
// O elemento "primeiro" é criado e então o texto do | |
// primeiro nome "Antonio" é vinculado ao elemento "primeiro" | |
Element primeiro = doc.createElement("primeiro"); | |
primeiro.appendChild(doc.createTextNode("Antonio")); | |
// O elemento "primeiro" é vinculado ao elemento raiz "nome" | |
// e torna-se seu nó filho | |
raiz.appendChild(primeiro); | |
raiz.appendChild(doc.createTextNode("\n ")); | |
// O elemento "sobrenome" é criado, o texto "da Silva" é | |
// vinculado, e então "sobrenome" é anexado ao elemento raiz | |
Element sobrenome = doc.createElement("sobrenome"); | |
sobrenome.appendChild(doc.createTextNode("da Silva")); | |
raiz.appendChild(sobrenome); | |
raiz.appendChild(doc.createTextNode("\n ")); | |
// O elemento "apelido" é criado e anexado sem texto à raiz | |
Element apelido = doc.createElement("apelido"); | |
raiz.appendChild(apelido); | |
// Nova linha sem identação é anexada, voltando ao nível raiz | |
raiz.appendChild(doc.createTextNode("\n")); | |
// No seguinte escopo try/catch, o arquivo XML "exemplo1.xml" | |
// é gerado em disco, contendo o documento XML criado | |
try { | |
OutputFormat formatter = new OutputFormat(); | |
FileWriter out = new FileWriter("exemplo1.xml"); | |
XMLSerializer serializer = new XMLSerializer(out, formatter); | |
formatter.setPreserveSpace(true); | |
serializer.serialize(doc); | |
} catch (Exception e) { | |
System.err.print("Problema na criação do arquivo XML."); | |
e.printStackTrace(); | |
System.exit(1); | |
} | |
} // Fim da função main | |
} // Fim da classe CriaXML |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment