2009-05-14 7 views

Antwort

40
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()); 
+1

Es funktioniert gut, vielen Dank. –

+0

haben Sie die erste Zeile des Codes in der letzten Zeile verwendet. die mittleren Zeilen haben nichts getan, wenn Sie es überprüfen ... – AbhishekB

+2

Die erste Zeile verwendete ByteArrayOUTPUTStream, während das letzte ByteArrayINPUTStream verwendet wurde. Darüber hinaus wird in der ersten Zeile deklarierter outputStream als Parameter für StreamResult verwendet. –

5

Wenn Sie Java ohne Drittanbieter-Bibliotheken verwenden, können Sie erstellen InputStream unter Code verwendet:

/* 
* 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()); 
} 
2
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()); 
} 

Dies funktioniert, wenn Sie Apache Xerces Implementierung verwenden, können Sie auch festlegen Formatparameter mit dem Ausgabeformat.

1
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; 

}

Wenn Sie zufällig DOM4J verwenden und Sie müssen es ziemlich drucken!