from convertir java xml xstream

java - convertir - cómo crear un InputStream desde un documento o nodo



java fileinputstream from file (5)

Si está utilizando Java sin bibliotecas de terceros, puede crear InputStream utilizando el siguiente código:

/* * Convert a w3c dom node to a InputStream */ private InputStream nodeToInputStream(Node node) throws TransformerException { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); Result outputTarget = new StreamResult(outputStream); Transformer t = TransformerFactory.newInstance().newTransformer(); t.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes"); t.transform(new DOMSource(node), outputTarget); return new ByteArrayInputStream(outputStream.toByteArray()); }

¿Cómo puedo crear un objeto InputStream a partir de un documento XML o un objeto Nodo para usar en xstream? Necesito reemplazar el ??? con algún código significativo. Gracias.

Document doc = getDocument(); InputStream is = ???; MyObject obj = (MyObject) xstream.fromXML(is);



public static InputStream documentToPrettyInputStream(Document document) throws IOException{ ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); XMLWriter xmlWriter = new XMLWriter(outputStream, OutputFormat.createPrettyPrint()); xmlWriter.write(document); xmlWriter.close(); InputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); return inputStream;

}

¡Si por casualidad usas DOM4j y necesitas imprimirlo bastante!


public static InputStream document2InputStream(Document document) throws IOException { ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); OutputFormat outputFormat = new OutputFormat(document); XMLSerializer serializer = new XMLSerializer(outputStream, outputFormat); serializer.serialize(document); return new ByteArrayInputStream(outputStream.toByteArray()); }

Esto funciona si está utilizando la implementación de Xerces de apache, también puede establecer el parámetro de formato con el formato de salida.


ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); Source xmlSource = new DOMSource(doc); Result outputTarget = new StreamResult(outputStream); TransformerFactory.newInstance().newTransformer().transform(xmlSource, outputTarget); InputStream is = new ByteArrayInputStream(outputStream.toByteArray());