2009-05-14 5 views

Répondre

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

Cela fonctionne bien, merci beaucoup. –

+0

vous avez utilisé la 1ère ligne de code dans la dernière ligne. les lignes du milieu n'ont rien fait si on le vérifie ... – AbhishekB

+2

La première ligne utilisait ByteArrayOUTPUTStream tandis que la dernière utilisait ByteArrayINPUTStream. De plus, outputStream déclaré dans la première ligne est utilisé comme un paramètre pour StreamResult. –

5

Si vous utilisez Java sans parti tiers des bibliothèques, vous pouvez créer InputStream en utilisant ci-dessous le code:

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

Cela fonctionne si vous utilisez la mise en œuvre de Xerces apache, vous pouvez également définir paramètre de format avec le format de sortie.

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; 

}

Si vous arrive d'utiliser DOM4J et vous devez l'imprimer assez!

Questions connexes