web-dev-qa-db-fra.com

Comment enregistrer un document DOM analysé et modifié au format XML?

J'ai le fichier XML. Je dois le lire, apporter des modifications et écrire une nouvelle version modifiée dans une nouvelle destination.

J'ai réussi à lire, analyser et corriger ce fichier (avec DocumentBuilderFactory, DocumentBuilder, Document et ainsi de suite).

Mais je ne peux pas trouver un moyen de sauvegarder ce fichier. Existe-t-il un moyen d’obtenir une vue en texte brut (sous la forme String) ou un meilleur moyen?

39
Roman

Quelque chose comme ça marche:

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

transformer.transform(input, output);
65
skaffman

Cela fonctionnera si vous utilisez 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();
}
2
Lukas Eder

Cela vous donnera la possibilité de définir le format XML

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