0
0

JavaでXMLをファイルに出力したい

Posted at

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)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0