改行やインデントのない 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 のバージョンによって異なる場合があります。プラットフォーム固有の回避策を検索してください。