javax.xml.parsers.DocumentBuilderFactory をエントリポイントとして Dom document を構築し、javax.xml.transform.TransformerFactory をエントリポイントとして Transformer を取得し、document を DomSource に wrap して transform して文字列化する。
いやーまどろっこしいと言うか、API reference だけからでは到底たどり着かんわ…
最初 org.w3c.dom.bootstrap.DOMImplementationRegistry から始めて Dom document を取り出そうとしていたが、エラーになった。
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = null; try { db = dbf.newDocumentBuilder(); } catch (ParserConfigurationException e1) { e1.printStackTrace(); } Document doc = db.newDocument(); Element html = doc.createElement("html"); doc.appendChild(html); Element body = doc.createElement("body"); html.appendChild(body); Text text = doc.createTextNode("JAN test"); body.appendChild(text); // 文字列化 TransformerFactory tf = TransformerFactory.newInstance(); Transformer transformer = null; try { transformer = tf.newTransformer(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.METHOD, "html"); // output PrintWriter writer = response.getWriter(); StreamResult result = new StreamResult(writer); DOMSource source = new DOMSource(doc); try { transformer.transform(source, result); } catch (TransformerException e) { e.printStackTrace(); } writer.flush();