XMLにインデント、空き要素の終了タグ、好きな改行コードを入れる(Java1.5)

たいした役に立たないかもしれないが、意外に情報がない。

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setAttribute("indent-number", 2);  // スペース2個分のインデント
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
// DOMの処理
Transformer transformer = factory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // インデント付きにする
// 一旦文字列にするためにByteArrayOutputStreamを使用
ByteArrayOutputStream out = new ByteArrayOutputStream();
transformer.transform(
		new DOMSource(document),
		new StreamResult(new OutputStreamWriter(out, "utf-8")));
String xml = out.toString("utf-8");
xml = xml.replaceAll("<([a-zA-Z]+)/>", "<$1></$1>");
xml = xml.replaceAll("\n", "\r\n");

こんな感じ。最後の1行はXMLに限らんけどね。