電子書籍の厳選無料作品が豊富!

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 回答 (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/tutor …

この回答への補足

ありがとうございました!ちゃんとできました。
ちなみに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)
           ......
といったエラーなんですが、何がいけないか分かりますか?

補足日時:2001/12/13 14:35
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/12/13 15:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!