Java から XML をきれいに印刷するにはどうすればよいでしょうか? 質問する

Java から XML をきれいに印刷するにはどうすればよいでしょうか? 質問する

改行やインデントのない XML を含む Java 文字列があります。これを適切にフォーマットされた XML を含む文字列に変換したいと思います。どうすればよいでしょうか?

String unformattedXml = "<tag><nested>hello</nested></tag>";
String formattedXml = new [UnknownClass]().format(unformattedXml);

注: 入力はStringです。出力もStringです。

(基本)模擬結果:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <tag>
    <nested>hello</nested>
  </tag>
</root>

ベストアンサー1

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
// initialize StreamResult with File object to save to file
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);
String xmlString = result.getWriter().toString();
System.out.println(xmlString);

注: 結果は Java のバージョンによって異なる場合があります。プラットフォーム固有の回避策を検索してください。

おすすめ記事