23/5/12

Leer un String, convertirlo a Document y guardarlo como archivo XML

Por lo general cuando trabajo con XML en Java utilizo JDOM, por razones de un proyecto laboral tuve que utilizar DOM, he aquí un ejemplo de cómo leer un String, convertirlo a un objeto Document y guardarlo en un archivo.
Comencemos por la función que convertirá el String en un Document:
public Document stringADocumento(String s) {          
                    Document tmpXml=null;
          DocumentBuilder builder = null;
          try{
               builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
         }catch(javax.xml.parsers.ParserConfigurationException error){
                 System.out.println("Error crando factory String2DOM "+error.getMessage());
                 return null;
          }
          try{
               tmpXml=builder.parse(new ByteArrayInputStream(s.getBytes()));
          }catch(org.xml.sax.SAXException error){
             System.out.println("Error parseo SAX String2DOM "+error.getMessage());
             return null;
           }catch(IOException error){
                System.out.println("Error generando Bytes String2DOM "+error.getMessage());
                return null;
            }
            return tmpXml;
      }
Ahora la funcion main con un String que enviamos:
public static void main (String[] args) throws TransformerConfigurationException, TransformerException {                                                 
         String cadena = "" + " " + " Alvaro" + "    Gerente" + " " + " " + " Lorena" + " administradorA" + " " + "";
         CadenaAXML xm = new CadenaAXML();
         Source origen = new DOMSource(xm.stringADocumento(cadena));
         Result resultado = new StreamResult(new java.io.File("resultado.xml"));
         //nombre del archivo
         Result consola= new StreamResult(System.out);
         Transformer transformar = TransformerFactory.newInstance().newTransformer();
          transformar.transform(origen, resultado);
          transformar.transform(origen, consola);
 }
Finalmente las librerias utilizadas:
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
Ahora dejo el proyecto realizado en jdeveloper

Mira #AntesQueSeaTarde completo

Echa un vistazo al Tweet de @NatGeo_la: https://twitter.com/NatGeo_la/status/792908992661950464?s=09