• 締切済み

DOMツリーの作り方。

XMLのDOMツリーをjavaで作りたいです。 ---Root.xmlファイル--- <?xml version="1.0!> <root></root> ------ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = dbf.newDocumentBuilder(); Document root = builder.parse("c:/tmp/Root.xml"); /*rootの子ノードとして新しいノード(title)を追加していく*/ といったやり方があると思うんですが、 そうではなく、プログラム内でrootドキュメントを作ってtitle子ノードを追加していきたいんです。 つまり、Root.xmlに頼りたくないということなんですが、どうしたらよいでしょうか?

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

私もあまり詳しくはないんですが、以下のような感じになると思います。 DocumentBuilder の parse() メソッドではなく、newDocument() メソッドを使って DOM オブジェクトのインスタンスを作成して、それに Element を追加してゆく、という感じ。 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.newDocument(); Element root = (Element) document.createElement("root"); document.appendChild(root); Element title = (Element) document.createElement("title"); root.appendChild(title); 参考URLに、本家 SUN の JAXP のチュートリアルのページを紹介しておきます。 DOM は Part3 ですね。頑張って読むだけの価値はあると思いますよ。

参考URL:
http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/index.html
myrimyri
質問者

お礼

appendChildの前に importNode()メソッドを使って Documentの実装の変換を行いました。 が、 org.w3c.dom.DOMException: DOM003 Namespace error というエラーが出ました。なんだろう????分かりますか??

myrimyri
質問者

補足

ありがとうございました!ちゃんとできました。 ちなみにtitleを追加するときに、新しいのを作らないで、 データベースから得てきた Node型の<title>タイトル名</title> をroot.appendChild(title) しようとして、エラーが出ました。 org.w3c.dom.DOMException: DOM005 Wrong document  at org.apache.xerces.dom.ParentNode.internalInsertBefore(ParentNode.jav :394) at org.apache.xerces.dom.ParentNode.insertBefore(ParentNode.java:326) at org.apache.xerces.dom.NodeImpl.appendChild(NodeImpl.java:224) at addDOM.add_node(addDOM.java:19)            ...... といったエラーなんですが、何がいけないか分かりますか?

関連するQ&A