xmlファイルへの書き込みについて悩んでいます。
下記のxmlファイル(SaveData.xml)で、Path_21の「C:\」を「D:\」に書き換えたいのですが、
<?xml version="1.0"?>
<SaveData>
<YYYYMM_21>200811</YYYYMM_21>
<Path_21>C:\</Path_21>
<YYYYMM_10>200812</YYYYMM_10>
<Path_10>C:\</Path_10>
</SaveData>
---------------------------------------------------
以下のようにプログラムを作成しています。
Dim xml_Write As New System.Xml.XmlWriterSettings
xml_Write.Encoding = System.Text.Encoding.UTF8
xml_Write.Indent = True
xml_Write.IndentChars = ControlChars.Tab
Dim writer As System.Xml.XmlWriter = System.Xml.XmlWriter.Create(Application.StartupPath & _
"\SaveData.xml", xml_Write)
writer.WriteStartElement("SaveData")
writer.WriteStartElement("Path_21")
writer.WriteValue(Label_21.Text)
writer.WriteEndElement()
writer.Close()
目的のところは、ちゃんとデータが更新されるんですが、その他のデータが消去されてしまいます。
目的のデータのみを更新し、その他、xmlファイルに記載されているデータを残すにはどのようにしたらいいでしょうか?
System.Xml.XmlDocument では駄目でしょうか?
doc.Load(source)
doc.SelectSingleNode("//Path_21").InnerText = Label_21.Text
doc.Save(destination)
アドバイスありがとうございます。
このような感じで作成をしてみました。
Dim Doc As New System.Xml.XmlDocument
Doc.Load(System.Xml.XmlReader.Create(Application.StartupPath & "\SaveData.xml"))
Doc.DocumentElement.SelectSingleNode("Path_21").InnerText = Label_21.Text
Doc.Save("SaveData.xml")
ですが、私の設定方法が悪いのか Doc.Save(""SaveData.xml)のところで、「別のプロセスに使用されているためアクセスできませんでした。」といったようなエラーが発生してしまい、xmlファイルを更新できませんでした。
ネットで調べたのですがイマイチ原因が掴めないのですがよろしければご教授いただければ幸いです。
あっ、すみません先の質問で、
Doc.DocumentElement.SelectSingleNode("Path_21").InnerText = Label_21.Text
のところは、ご教授いただいたように
Doc.DocumentElement.SelectSingleNode("//Path_21").InnerText = Label_21.Text
としてあります。
言葉足らずですみません。
たとえば...
Doc.Save("C:\AAA.xml")
といたように指定すると私の求めているように保存されているので、現状、本来上書きしたいファイルを上書き処理できない状態で躓いています。
その後、何とかできました。
ありがとうございました。