tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルXMLファイルにデータを追加したいです
記事No2869
投稿日: 2006/01/12(Thu) 14:13
投稿者AIN
[OSのVer]:WindowsXP    [VBのVer]:VB.NET  
設定ファイルをシリカル化でXMLファイルとして保存しています。
元からあるXMLファイルに新たな情報を追加して保存したいのですが方法が分かりません。
<?xml version="1.0" encoding="utf-8"?>
<Contents2 xmlns:xsd="hhttp://www.w3.org/2001/XMLSchema"
xmlns:xsi="hhttp://www.w3.org/2001/XMLSchema-instance">
 <Members>
  <Account2>
   <Name>Account1</Name>
   <Link>http:</Link>
   <Data>C:\</Data>
  </Account2>
  <Account2>
   <Name>Account2</Name>
   <Link>hhttp://</Link>
   <Data>C:\</Data>
  </Account2>
 </Members>
</Contents2>
これを同じファイルに下のように追加されたファイルにしたいです。。
<?xml version="1.0" encoding="utf-8"?>
<Contents2 xmlns:xsd="hhttp://www.w3.org/2001/XMLSchema"
xmlns:xsi="hhttp://www.w3.org/2001/XMLSchema-instance">
 <Members>
  <Account2>
   <Name>Account1</Name>
   <Link>http:</Link>
   <Data>C:\</Data>
  </Account2>
  <Account2>
   <Name>Account2</Name>
   <Link>hhttp://</Link>
   <Data>C:\</Data>
  </Account2>
  <Account2>
   <Name>Account4</Name>
   <Link>hhttp://www</Link>
   <Data>C:\data</Data>
  </Account2>
 </Members>
</Contents2>

追加するデータはComboBox.Textから持ってきています。
どうすればいいでしょうか?

[ツリー表示へ]
タイトルRe: XMLファイルにデータを追加したいです
記事No2871
投稿日: 2006/01/12(Thu) 23:44
投稿者なおこ(・∀・)
お世話になります。

こんな感じでいかがでしょうか。
Dim xmlpath As String = System.IO.Path.Combine(Application.StartupPath, "test.xml")
Dim doc As Xml.XmlDocument = New Xml.XmlDocument
doc.Load(xmlpath)
Dim membersNode As Xml.XmlNode
membersNode = doc.SelectSingleNode("Contents2/Members")

Dim accountNode As Xml.XmlElement = doc.CreateElement("Account2")
With accountNode
  Dim nameNode As Xml.XmlElement = doc.CreateElement("Name")
  nameNode.InnerText = "Account4"
  .AppendChild(nameNode)

  Dim linkNode As Xml.XmlElement = doc.CreateElement("Link")
  linkNode.InnerText = "hhttp://www"
  .AppendChild(linkNode)

  Dim dataNode As Xml.XmlElement = doc.CreateElement("Data")
  dataNode.InnerText = "C:\data"
  .AppendChild(dataNode)
End With
membersNode.AppendChild(accountNode)

doc.Save(xmlpath)

[ツリー表示へ]
タイトルRe^2: XMLファイルにデータを追加したいです
記事No2877
投稿日: 2006/01/13(Fri) 10:40
投稿者AIN
なおこ(・∀・) さん。教えていただきありがとうございますm(__)m
おかげできちんと動きました。VB初心者なものでこんな方法があるとは思いつきませんでした。
serializeを使ってしかXMLファイルを作れないと思ってしまっていたので・・・。
お礼をしておいてなんですけど、もうひとつ教えていただきたいことがあります。
<?xml version="1.0" encoding="utf-8"?>
<Contents2 xmlns:xsd="hhttp://www.w3.org/2001/XMLSchema"
xmlns:xsi="hhttp://www.w3.org/2001/XMLSchema-instance">
 <Members>
  <Account2>
   <Name>Account1</Name>
   <Link>http:</Link>
   <Data>C:\</Data>
  </Account2>
  <Account2>
   <Name>Account2</Name>
   <Link>hhttp://</Link>
   <Data>C:\</Data>
  </Account2>
 </Members>
</Contents2>
このデータを下のように上書きするにはどうすればよいでしょうか?
<?xml version="1.0" encoding="utf-8"?>
<Contents2 xmlns:xsd="hhttp://www.w3.org/2001/XMLSchema"
xmlns:xsi="hhttp://www.w3.org/2001/XMLSchema-instance">
 <Members>
  <Account2>
   <Name>Account1</Name>
   <Link>http:</Link>
   <Data>C:\</Data>
  </Account2>
  <Account2>
   <Name>Account2</Name>
   <Link>hhttp://www</Link>
   <Data>C:\data</Data>
  </Account2>
 </Members>
</Contents2>
最初の<Name>のデータが同じ場合上書きをするという処理がしたいです。
お願いします

[ツリー表示へ]
タイトルRe^3: XMLファイルにデータを追加したいです
記事No2879
投稿日: 2006/01/13(Fri) 15:19
投稿者なおこ(・∀・)
お世話になります。

> 最初の<Name>のデータが同じ場合上書きをするという処理がしたいです。
> お願いします

こんな感じでしょうか。

Private Enum ChildNode
  Name = 0
  Link = 1
  Data = 2
End Enum

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Handles Button1.Click
  Dim xmlpath As String = System.IO.Path.Combine(Application.StartupPath, "test.xml&qu
ot;)
  Dim doc As Xml.XmlDocument = New Xml.XmlDocument
  doc.Load(xmlpath)
  Dim membersNode As Xml.XmlNode
  membersNode = doc.SelectSingleNode("Contents2/Members")

  For Each accountNode As Xml.XmlElement In membersNode.ChildNodes
    If accountNode.Name = "Account2" AndAlso _
       accountNode.ChildNodes(ChildNode.Name).InnerText = "Account2" Then
      accountNode.ChildNodes(ChildNode.Link).InnerText = "Link_Update"
      accountNode.ChildNodes(ChildNode.Data).InnerText = "Data_Update"
      Exit For
    End If
  Next
  doc.Save(xmlpath)
End Sub

[ツリー表示へ]
タイトルRe^4: XMLファイルにデータを追加したいです
記事No2894
投稿日: 2006/01/16(Mon) 09:52
投稿者AIN
なおこ(・∀・) さん。たびたび本当にありがとうございますm(__)m
おかげで出来ました。また何か分からないことがあった場合には
よろしくお願いします。

[ツリー表示へ]