- PR -

指定ノードの要素の更新について

投稿者投稿内容
とっと
大ベテラン
会議室デビュー日: 2004/03/25
投稿数: 197
投稿日時: 2004-12-01 10:34
おはようございます。

コード省略されてます?

僕はあんまりReplaceChildメソッドは使ってないので調べないと分かりませんが・・。

僕は、
nameNode = xmldoc.SelectSingleNode("世界の指導者/指導者[@ID=1]/名前")
のように一気に名前要素まで取得しています。

これに対して脳味噌筋肉さんは、
Dim Doc As New XmlDocument
Doc.Load("上記XML")
Dim node As XmlNode = Doc.SelectSingleNode("/世界の指導者/指導者 [ID=1]")

Dim nodeNAME As XmlNode
nodeNAME = node.SelectSingleNode("名前")

と処理を分けていますが何か意味があるんですか?

僕みたいに名前要素まで一気に取得すれば単純に
nameNode.InnerText = "T中M子"

でOKでReplaceChildメソッドとか使わなくてもいいと思うんですが・・・。


あと、ReplaceChildメソッドの引数はXmlNodeを指定するようですね。
これってたとえば、
ReplaceChild(newNode,oldNode) って事ですよね

単純にInnnerTextを更新するだけならあんまり意味ないんじゃないですか。
わざわざnewNodeに指定するXmlNodeをもう1つ用意しないといけないみたいだし・・。

[ メッセージ編集済み 編集者: とっと 編集日時 2004-12-01 10:54 ]
かもがや
大ベテラン
会議室デビュー日: 2004/08/31
投稿数: 103
投稿日時: 2004-12-01 10:50
脳味噌筋肉です。

とっとさん、おつきあい頂きましてありがとうございました。
やっと解決しました。

仰せのとおり、コードとしては

コード:
<世界の指導者> 
	<指導者 ID="1"> 
		<名前>小泉J一郎</名前> 
		<備考>日本</備考> 
	</指導者> 
	<指導者 ID="2"> 
		<名前>Bシュ</名前> 
		<備考>米国</備考> 
	</指導者> 
</世界の指導者> 


            Dim Doc As New XmlDocument
            Doc.Load("上記XML")
            Dim node As XmlNode = Doc.SelectSingleNode("/世界の指導者/指導者 [ID=1]")

            Dim nodeNAME As XmlNode
            nodeNAME = node.SelectSingleNode("名前")
            nodeNAME.InnerText = "T中M子"
            Doc.save("上記XML")




で問題なくいけました。

書き換えが出来ていなかった原因は

コード:
            nodeNAME.InnerText = "T中M子"



の部分で、実際には

コード:
            nodeNAME.InnerText = TextBox1.Text



であったのですが、TextBoxに「T中M子」と入力しているにも関わらず、入力前
に設定していた「小泉J一郎」が何故か効いていた為に、「小泉J一郎」が「小泉
J一郎」に書き換わっていた事に気づけないでいたためでした。。。

(ただ、今度は入力したT中M子はどうなっているの?という新たな問題を解明し
なければならないのですが・・)

ご足労おかけして大変申し訳ありませんm()m
おつきあい頂きましてありがとうございました。

スキルアップ/キャリアアップ(JOB@IT)