xmlファイルへの書き込みについて

解決


マリリン  2008-06-06 17:21:37  No: 139850  IP: 192.*.*.*

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ファイルに記載されているデータを残すにはどのようにしたらいいでしょうか?

編集 削除
魔界の仮面弁士  2008-06-06 20:27:40  No: 139851  IP: 192.*.*.*

System.Xml.XmlDocument では駄目でしょうか?

  doc.Load(source)
  doc.SelectSingleNode("//Path_21").InnerText = Label_21.Text
  doc.Save(destination)

編集 削除
マリリン  2008-06-09 15:20:20  No: 139852  IP: 192.*.*.*

アドバイスありがとうございます。

このような感じで作成をしてみました。


 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ファイルを更新できませんでした。
ネットで調べたのですがイマイチ原因が掴めないのですがよろしければご教授いただければ幸いです。

編集 削除
マリリン  2008-06-09 15:23:25  No: 139853  IP: 192.*.*.*

あっ、すみません先の質問で、

Doc.DocumentElement.SelectSingleNode("Path_21").InnerText = Label_21.Text

のところは、ご教授いただいたように

Doc.DocumentElement.SelectSingleNode("//Path_21").InnerText = Label_21.Text

としてあります。

編集 削除
マリリン  2008-06-09 15:43:15  No: 139854  IP: 192.*.*.*

言葉足らずですみません。

たとえば...

Doc.Save("C:\AAA.xml")

といたように指定すると私の求めているように保存されているので、現状、本来上書きしたいファイルを上書き処理できない状態で躓いています。

編集 削除
マリリン  2008-06-10 14:41:21  No: 139855  IP: 192.*.*.*

その後、何とかできました。

ありがとうございました。

編集 削除