2009-05-14 11 views

Odpowiedz

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

Działa dobrze, bardzo dziękuję. –

+0

użyłeś pierwszej linii kodu w ostatnim wierszu. środkowe linie nic nie zrobiły, jeśli je sprawdziłeś ... – AbhishekB

+2

Pierwsza linia używana ByteArrayOUTPUTStream podczas ostatniego użycia ByteArrayINPUTStream. Ponadto outputStream zadeklarowany w pierwszym wierszu jest używany jako parametr do StreamResult. –

5

Jeśli używasz Java bez żadnych bibliotek innych firm, można utworzyć InputStream za pomocą poniższego kodu:

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

To działa, jeśli używasz realizację Xerces Apache, można także ustawić parametr formatu z formatem wyjściowym.

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; 

}

Jeśli zdarzy się użyć dom4j i trzeba wydrukować go dość!

Powiązane problemy