2010年2月9日火曜日

[java][dom]DOMドキュメントをStringに変換する

さっそく変換しませう。
---
/**
* <code>org.w3c.dom.Document</code>を<code>String</code>に変換します。

* @param doc
* @return
*/
 public static String documentToString(final org.w3c.dom.Document doc){
StringWriter sw = new StringWriter();
printDocument(doc, sw);
return sw.toString();
}

/**
* <code>org.w3c.dom.Document</code>を変換して指定された<code>Writer</code>に送ります。
* <p>
* 使い方:
* <pre>
* Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
* DomUtils.printDocument(doc, out);
* </pre>
* </p>
* @param doc
* @param writer
*/
public static void printDocument(final org.w3c.dom.Document doc, final Writer writer){
Source source = new DOMSource(doc);
Result result = new StreamResult(writer);
try {
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(source, result);
} catch (TransformerConfigurationException e) {
e.printStackTrace();
} catch (TransformerException e) {
e.printStackTrace();
}
}
---

動くことだけを確認するテストケースがこちら。もう眠いので。
---
/**
* <code>org.w3c.dom.Document</code>を<code>String</code>に変換できるか
* @throws Exception
*/
@Test
 public void testDocumentToString() throws Exception{
  URL url = getClass().getResource("book.xml");
Document doc = DomUtils.parse(url.getPath());
String s = DomUtils.documentToString(doc);
System.out.println(s);
assertTrue(s.length()>0);
}
---
ここに出てくるDomUtils.parseは後で別掲します。
ではまた。

0 件のコメント:

コメントを投稿