La escritura de la información contenida en el DOM se puede secuenciar en forma de texto utilizando otra utilidad de Java llamada Transformer
. Se trata de una utilidad que permite realizar fácilmente conversiones entre diferentes representaciones de información jerárquica. Es capaz, por ejemplo, de pasar la información contenida en un objeto Documento a un archivo de texto en formato XML .
Transformer
es también una clase abstracta y requiere de una fábrica para poder ser instanciada. La clase Transformer
puede trabajar con multitud de contenedores de información porque en realidad trabaja con un par de tipos adaptadores (clases que hacen compatibles jerarquías diferentes) que se llaman Source
y Result
. Las clases que implementen estas interfaces se encargarán de hacer compatible un tipo de contenedor específico al requerimiento de la clase Transformer
. Así, disponemos de las clases DOMSource, SAXSource
o StreamSorce
como adaptadores del contenedor de la fuente de información ( DOM, SAX o Stream respectivamente). DOMResult, SAXResult
o StreamResult
son los adaptadores equivalentes del contenedor destino.
El código básico para realizar una transformación de DOM archivo de texto XML sería el siguiente:
1.- Instanciar el documento DOM en memoria.
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
DOMImplementation implementation = builder.getDOMImplementation();
Document document = implementation.createDocument(null, name, null);
2.- El documento DOM se crea en memoria creando primero el elemento raíz.
Element raiz = document.getDocumentElement();
y a partir de el añadiendo otros elementos, los métodos:
createElement(String tagName) //crea el elemento del tipo especificado
createTextNode(String data)//crea un Textnode dando valor
(Node newChild)
appendChild(Node newChild)
//añade un nodo hijo al final de de la lista de nodos hijos del nodo
3.- Creación e instalación Transformer.
<span>Transformer trans = TransformerFactory.newInstance .newTransformer ;<br></span><span id="yui_3_17_2_1_1596016483417_136">
// Creación de los adaptadores Source y Results a partir de un Documento
<br></span><span>
// y un File.
<br></span><span>StreamResult result = new StreamResult ( file ) ;
<br></span><span>DOMSource source = new DOMSource ( doc ) ;<br></span>
<span>trans. transform ( source, result ) ;</span>