Как сохранить разобранный и измененный документ DOM в XML-файл? - PullRequest
39 голосов
/ 30 декабря 2010

У меня есть xml-файл.Мне нужно прочитать его, внести некоторые изменения и записать новую измененную версию в новый пункт назначения.

Мне удалось прочитать, проанализировать и исправить этот файл (с DocumentBuilderFactory, DocumentBuilder, Document и т.on).

Но я не могу найти способ сохранить этот файл.Есть ли способ получить его в виде простого текста (как String) или как-нибудь лучше?

Ответы [ 3 ]

65 голосов
/ 30 декабря 2010

Примерно так работает:

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

transformer.transform(input, output);
2 голосов
/ 30 декабря 2010

Это будет работать, если вы используете 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 голосов
/ 25 июня 2015

Это даст вам возможность определить формат xml

new XMLWriter(new FileOutputStream(fileName),
              new OutputFormat(){{
                        setEncoding("UTF-8");
                        setIndent("    ");
                        setTrimText(false);
                        setNewlines(true);
                        setPadText(true);
              }}).write(document);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...