2012-08-16 15 views
11

soy objeto de documento de inicio de esta manera:conversión de objeto de documento a byte []

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
Document doc = docBuilder.newDocument(); 

Después de que estoy construyendo un archivo XML mediante la inserción de datos al objeto doc.

Finalmente estoy escribiendo los contenidos en un archivo en mi computadora.

Mi pregunta es cómo escribir el contenido del documento en un byte[] *

Éste es cómo escribir el contenido del archivo XML:?

TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
Transformer transformer = transformerFactory.newTransformer(); 
DOMSource source = new DOMSource(doc); 
StreamResult result = new StreamResult(new File("changeOut.xml")); 
// Output to console for testing 
// StreamResult result = new StreamResult(System.out); 
transformer.transform(source, result); 

Respuesta

21

Pass OutputStream en lugar de Archivo a la StreamResult constructor.

ByteArrayOutputStream bos=new ByteArrayOutputStream(); 
StreamResult result=new StreamResult(bos); 
transformer.transform(source, result); 
byte []array=bos.toByteArray(); 
7

Este trabajo para mí:

public byte[] documentToByte(Document document) 
{ 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    org.apache.xml.security.utils.XMLUtils.outputDOM(document, baos, true); 
    return baos.toByteArray(); 
} 
+0

¿Tiene detalles de dependencia de org.apache.xml.security.utils.XMLUtils.outputDOM? Obtuve solo archivo de clase de soporte de nodo –

Cuestiones relacionadas