application-xmlEn algún desarrollo, para poder cifrar un XML utilizando el API de apache santuario (The Apache XML Security), necesite convertir el String XML a Objeto org.w3c.dom.Document, requerido en la funcionalidad de “EncryptedKey” (Después creare una entrada utilizando The Apache XML Security).

Las líneas necesarias para pasar de String XML a org.w3c.dom.Document son:

import java.io.StringReader;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;

public class Ejemplo {
    /**
     * xml="<Padre><nodo>valor 1</nodo><nodo>valor 2</nodo></Padre>"
     */
    public Document getObjetoDocument(String xml) {
        Document xmlDocumentEncriptar = null;
        try {
            DocumentBuilder db = DocumentBuilderFactory.newInstance()
                    .newDocumentBuilder();
            xmlDocumentEncriptar = db.parse(new InputSource(
                    new StringReader(xml)));
        } catch (Exception e) {
            Logger.getLogger(Ejemplo.class.getName()).log(Level.SEVERE, null, e);
        }
        return xmlDocumentEncriptar;
    }
}

Ahora las líneas necesarias para pasar de objeto org.w3c.dom.Document a String XML son:

import java.io.StringWriter;
import javax.xml.transform.Transformer;
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;

public class Ejemplo {
    
     public String convertirDocument(Document documentoXml)
                                                     throws Exception {
        String resultadoXML = "";
        try {
            DOMSource domSource = new DOMSource(documentoXml);
            StringWriter writer = new StringWriter();
            StreamResult result = new StreamResult(writer);
            TransformerFactory tf = TransformerFactory.newInstance();
            Transformer transformer = tf.newTransformer();
            transformer.transform(domSource, result);
            resultadoXML = writer.toString();
        } catch (TransformerException e) {            
            throw new Exception(e.getMessage(), e);
        }
        return resultadoXML;
    }
}

Espero me haya hecho entender, cualquier inquietud no dudes en contactarme. Buen día

Deja un comentario

Tu dirección de correo electrónico no será publicada.