JavaでXMLをファイルに出力したい場合はTransformerを利用します。
例: メモリ上で構築したXMLをfruits.xmlに出力する。
// XMLをメモリ上で構築する。
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element e1 = document.createElement("element1");
e1.setAttribute("name", "ELEMENT1");
document.appendChild(e1);
Element e2 = document.createElement("element2");
e2.setAttribute("name", "ELEMENT2");
e1.appendChild(e2);
Element e3 = document.createElement("element3");
e3.setTextContent("ELEMENT3");
e2.appendChild(e3);
Element e4 = document.createElement("element4");
e4.setTextContent("ELEMENT4");
e1.appendChild(e4);
// XMLをファイルに出力する。
Transformer transformer = TransformerFactory.newDefaultInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(new DOMSource(document), new StreamResult(new File("output.xml")));
これを実行すると、以下のようなoutput.xmlが作成されるはずです。
output.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<element1 name="ELEMENT1">
<element2 name="ELEMENT2">
<element3>ELEMENT3</element3>
</element2>
<element4>ELEMENT4</element4>
</element1>
出力時のオプションはTransformer.setOutputPropertyで指定します。今回はINDENT=yesとすることで、Pretty Printしています。なお、このメソッドで指定できるプロパティはOutputKeysクラスに定数定義されています。
環境情報
C:\>javac -version
javac 17.0.3
C:\>java -version
openjdk version "17.0.3" 2022-04-19
OpenJDK Runtime Environment Temurin-17.0.3+7 (build 17.0.3+7)
OpenJDK 64-Bit Server VM Temurin-17.0.3+7 (build 17.0.3+7, mixed mode, sharing)