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; }