- 締切済み
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に頼りたくないということなんですが、どうしたらよいでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- a-kuma
- ベストアンサー率50% (1122/2211)
私もあまり詳しくはないんですが、以下のような感じになると思います。 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 ですね。頑張って読むだけの価値はあると思いますよ。
お礼
appendChildの前に importNode()メソッドを使って Documentの実装の変換を行いました。 が、 org.w3c.dom.DOMException: DOM003 Namespace error というエラーが出ました。なんだろう????分かりますか??
補足
ありがとうございました!ちゃんとできました。 ちなみに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) ...... といったエラーなんですが、何がいけないか分かりますか?