アプリ版:「スタンプのみでお礼する」機能のリリースについて

XMLの扱いがわからなくて困っています。
javaでXMLのノードを変える、例えば、
jspの画面で要素ノードとテキスト名(要素ノードの内容)を入力して
送信ボタンを押したら、要素ノードでノード検索をしてそのテキスト名を
変更するという処理をする場合、replaceChildメソッドを使うのかと
思ったんですが、replaceChildメソッドだと、「既存のノード」しか
置き換えれなくて文字列が指定できません。
この場合、文字列をノードに変換するメソッドがあるのか、それとも
他に方法があるのか教えていただけないでしょうか。
お願いします。
よろしくお願いします。

A 回答 (2件)

Document#createTextNode() で、テキストノードを作って、Node#replaceChild() で置き換えます。



# ということではない?
    • good
    • 0
この回答へのお礼

StringをTextNodeする方法がわからなかったんですが、
おかげで置き換え処理ができました。
テキストノードをつくって、それをNodeにセットして、
最後にルート要素に加えれば良いんですね。
とても助かりました、ありがとうございました。

お礼日時:2002/12/10 22:22

回答というよりもアドバイスですが、おそらく



> replaceChildメソッドだと、「既存のノード」しか
> 置き換えれなくて文字列が指定できません。

というところが勘違いの元で、要素の内容のテキストは、その要素ノードの子供にあたるテキストノードとして(DOMでは)表されます。試しに、テキストだけを内容とする要素ノードに対してgetFirstChild()を呼び出してみると、そのテキストノードが得られるはずです。

したがって、No.1の方が回答なさっているようにそのテキストノードを別のテキストノードで置き換えてもよいですし、replaceChildにこだわらなければ、そのテキストノードに対して直接CharacterData#setData()を使ってテキストの文字列だけ書き換えてもよいです。

この手の話は、XML自体の仕様というよりはDOMの仕様なので、参考URLなどでDOMの概念的なことだけでも抑えておくことをお奨めします。

参考URL:http://www.w3.org/TR/2000/REC-DOM-Level-2-Core-2 …
    • good
    • 0
この回答へのお礼

replaceChildはNodeを置き換えるもので、例えばテキストノードを
置き換えたければノードを用意して、そこにテキストノードをセットすれば
できるんですね。
会社にある本は古くて、あまり詳しいことが載っていないんですよね、
こういう基本的なことができないと致命的なので、しっかり調べようと思います。
setDataメソッドも教えていただいて、ありがとうございました。

お礼日時:2002/12/10 22:29

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