2010-12-30 8 views
33

Ho un file xml. Ho bisogno di leggerlo, apportare alcune modifiche e scrivere una nuova versione modificata in qualche nuova destinazione.Come salvare il documento DOM analizzato e modificato nel file xml?

Sono riuscito a leggere, analizzare e correggere questo file (con DocumentBuilderFactory, DocumentBuilder, Document e così via).

Ma non riesco a trovare un modo per salvare quel file. C'è un modo per ottenere la visualizzazione di testo normale (come String) o un modo migliore?

risposta

58

Qualcosa di simile a questo funziona:

Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
Result output = new StreamResult(new File("output.xml")); 
Source input = new DOMSource(myDocument); 

transformer.transform(input, output); 
2

che funziona, a condizione che si sta utilizzando xerces-j:

public void serialise(org.w3c.dom.Document document) { 
    java.io.ByteArrayOutputStream data = new java.io.ByteArrayOutputStream(); 
    java.io.PrintStream ps = new java.io.PrintStream(data); 

    org.apache.xml.serialize.OutputFormat of = 
         new org.apache.xml.serialize.OutputFormat("XML", "ISO-8859-1", true); 
    of.setIndent(1); 
    of.setIndenting(true); 
    org.apache.xml.serialize.XMLSerializer serializer = 
         new org.apache.xml.serialize.XMLSerializer(ps, of); 
    // As a DOM Serializer 
    serializer.asDOMSerializer(); 
    serializer.serialize(document); 

    return data.toString(); 
} 
0

che vi darà la possibilità di definire il formato xml

new XMLWriter(new FileOutputStream(fileName), 
       new OutputFormat(){{ 
         setEncoding("UTF-8"); 
         setIndent(" "); 
         setTrimText(false); 
         setNewlines(true); 
         setPadText(true); 
       }}).write(document); 
Problemi correlati