2010-12-30 19 views
33

Tengo xml-file. Necesito leerlo, hacer algunos cambios y escribir una nueva versión modificada para un nuevo destino.¿Cómo guardar el documento DOM analizado y modificado en el archivo xml?

Logré leer, analizar y aplicar parches a este archivo (con DocumentBuilderFactory, DocumentBuilder, Document, etc.).

Pero no encuentro la manera de guardar el archivo. ¿Hay alguna manera de obtener su vista de texto plano (como String) o de alguna otra manera?

Respuesta

58

Algo como esto funciona:

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

transformer.transform(input, output); 
2

que funcionará, siempre y cuando estés usando 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

Eso le dará la posibilidad de definir el formato XML

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