XML用APIのDocument相互変換(Java)

dom4j, jdom and w3c.dom. converting them into each other!!!

コイツら。

org.w3c.dom.Document
org.dom4j.Document
org.jdom.Document


JDKにデフォルトで入ってるW3CのDOM、
XPathの操作がしやすいDOM4J
そして(自分的には)直感的なJDOM。
3つともXMLブッ込む型名がDocumentなんに、そんままじゃ相互に使えねって言うお話。
メンドッ( ゚Д゚)y─┛~~
どうせだからココあたりを参考にして相互変換コード書いてみた。
何かとBrett McLaughlin氏の記事を見る頻度が高い気がするのは自分だけか?
XML関係で必ずたどり着く。


DOM4Jがホントにツンデレで、なかなかデレてくれない・゚・(つД`)・゚・ ウェ―ン
それでもXPathが思ったように使えるのはDOM4Jだから使ってたり。
JDOMが一番好きなんだけど、もうちょっとXPathがなぁ…
時代はXOMとやらですか?ww

// DOM4J -> W3C
public org.w3c.dom.Document getW3CDocument(org.dom4j.Document dom4j)
{
  org.w3c.dom.Document w3c = null;
  try
  {
    w3c = new org.dom4j.io.DOMWriter().write(dom4j);
  } catch (DocumentException e)
  {
    System.out.println(e);
  }
  return w3c;
}

// JDOM -> W3C
public org.w3c.dom.Document getW3CDocument(org.jdom.Document jdom)
{
  org.w3c.dom.Document w3c = null;
  try
  {
    DOMOutputter outputter = new DOMOutputter();
    w3c = outputter.output(jdom);
  } catch (JDOMException e)
  {
    System.out.println(e);
  }
  return w3c;
}

// W3C -> DOM4J
public org.dom4j.Document getDOM4JDocument(org.w3c.dom.Document w3c)
{
  org.dom4j.Document dom4j = null;
  DOMReader reader = new DOMReader();
  dom4j = reader.read(w3c);
  return dom4j;
}

// JDOM -> DOM4J
public org.dom4j.Document getDOM4JDocument(org.jdom.Document jdom)
{
  org.w3c.dom.Document w3c = w3cise(jdom);
  org.dom4j.Document dom4j = dom4jise(w3c);
  return dom4j;
}

// W3C -> JDOM
public org.jdom.Document getJDOMDocument(org.w3c.dom.Document w3c)
{
  DOMBuilder builder = new DOMBuilder();
  org.jdom.Document jdom = builder.build(w3c);
  return jdom;
}

// DOM4J -> JDOM
public org.jdom.Document getJDOMDocument(org.dom4j.Document dom4j)
{
  org.w3c.dom.Document w3c = w3cise(dom4j);
  org.jdom.Document jdom = jdomise(w3c);
  return jdom;
}