- - PR -
DOMでエレメント追加
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2002-05-29 16:52
下記のようなXMLファイルがあるとします。 既存のデータ(ノード)が2件あるのですが、 このXMLに、1件新たにデータ(ノード) を加えるとすると、どういう処理になるのでしょうか? (たとえば、UsrIDがmiura,Passwdがkr179を追加しようと するとなると) サンプルなど探したのですが、ノード追加というのが よくわかりません。(ノードを探して、テキストを書き換える ものはあったのですが。) 参考になるページなどありましたら教えてください。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE SampleLIST SYSTEM "Sample.dtd"> <SampleLIST> <Sample> <UsrID>tanaka</UsrID> <Passwd>ik644</Passwd> </Sample> <Sample> <UsrID>hayashi</UsrID> <Passwd>dc329</Passwd> </Sample> <SampleLIST> |
|
投稿日時: 2002-05-29 20:05
井上です。
うちの Web コンテンツ生成スクリプトで使っている、VBScript のコードを紹介します。 xdoc 要素の先頭のものを選択して IXMLDOMNode オブジェクトになっている変数 XNode にセットし、その下位に "FileName" という要素ノードを追加するものです。 Set XNodeList = XMLDoc2.getElementsByTagName("xdoc") Set XNode = XNodeList.Item(0) Set newChild = XMLDoc2.createElement("FileName") XNode.appendChild (newChild) createElement だけだとノードフラグメント (っていうんだっけ ?) の状態なので、対象ノードを指定して appendChild メソッドを実行することで、接合を行います。 _________________ www.kojii.net |
|
投稿日時: 2002-05-30 11:22
井上さん、ありがとうございます。
Javaで私は作っているのですが、井上さんが 提示してくださったコードというのは、 エレメント(タグ)を新たに追加、ということなのでしょうか? 私の例ですと、<SampleLIST> のなかに、 <Sample> <UsrID>××××</UsrID> <Passwd>×××××</Passwd> </Sample> こうやって、いくつかSampleタグがつらなっていく 感じなんですが、 createElementすると、UsrIDやPasswd以外の 新たなタグを追加するようなことですか? |
|
投稿日時: 2002-05-30 11:23
そうです。私の例ですと、xdoc 要素の下に FileName 要素が増えます。
後は、追加された FileName 要素の text プロパティに文字列をセットすれば、それが FileName 要素のテキストノードになります。 [ メッセージ編集済み 編集者: 井上孝司 編集日時 2002-05-30 11:25 ] |
|
投稿日時: 2002-05-30 12:41
回答、ありがとうございます。
すみません。私の説明が悪かったのだと思うんですが、 私がやりたかったのは、<SampleLIST> のなかにつらなっている、Sampleタグのデータを 増やしたいということなのです。 つまり、 既存のXMLデータが以下のものだとすると・・・・ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE SampleLIST SYSTEM "Sample.dtd"> <SampleLIST> <Sample> <UsrID>tanaka</UsrID> <Passwd>ik644</Passwd> </Sample> <Sample> <UsrID>hayashi</UsrID> <Passwd>dc329</Passwd> </Sample> <SampleLIST> <Passwd>×××××</Passwd> </Sample> ↑この既存XMLにはSampleノードが 2つしかありませんが、以下のように、 Sampleノードを増やしたいのです。 (DBに新規登録するような形。) XMLをDBみたいに扱いたいということだったのですが。。。 よろしくお願いします。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE SampleLIST SYSTEM "Sample.dtd"> <SampleLIST> <Sample> <UsrID>tanaka</UsrID> <Passwd>ik644</Passwd> </Sample> <Sample> <UsrID>hayashi</UsrID> <Passwd>dc329</Passwd> </Sample> <Sample> <UsrID>oka</UsrID> <Passwd>bf444</Passwd> </Sample> <SampleLIST> |
|
投稿日時: 2002-05-30 13:13
どこかのSampleノードをsampで参照するとして
Element clone = (Element) samp.cloneNode(true); clone.getElementsByTagName("UsrID").item(0).getFirstChild().setNodeValue("oka"); clone.getElementsByTagName("Passwd").item(0).getFirstChild().nodeValue("bf444"); で、このcloneをすでにあるSampleノードの後にappendChildしてあげれば よいのではと思います。 doc.getDocumentElement().appendChild(clone); |
|
投稿日時: 2002-05-30 13:42
よねくらさん、ありがとうございます!!!!!!!
できました!!!!!!!!!!!!!! 改めてありがとうございます。 大変お世話になりました。 それで、もしよろしければ、参考になるようなページを ご存知でしたら教えていただきたいです。 本当に有難うございました。 |
1