So, I have this program that gathers 'source', 'destination', and 'job name' from a user and then adds this information to an XML file in this type of manner
Code:
-<Jobs>
-<Job>
<JobName>a</JobName>
<Source>C:\Users\Public\Pictures\SamplePictures\Chrysanthemum.jpg</Source>
<Source>C:\Users\Public\Pictures\Sample Pictures\Desert.jpg</Source>
<Source>C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg</Source>
<Destination>C:\Users\Public\Pictures\Sample Pictures\a.zip</Destination>
<Timestamp>11/23/2012 3:43:42 PM</Timestamp>
</Job>
However, my issue comes from when i run the program a second time around. I want it to just collect the new information inputted in the program and append(add to) the XML file. However, when i run the program a second time the xml file only updates the source nodes for a single file (the last file read by the program).. So i am left with this after the initial run the second time around.
Code:
-<Job>
<JobName>b</JobName>
<Source>C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg</Source> <Destination>C:\Users\Public\Pictures\Sample Pictures\b.zip</Destination>
<Timestamp>11/26/2012 10:39:50 AM</Timestamp>
</Job>
**************(there should be more source files in the above code....this is my issue.)******************
i already have a check for if the file exists or not. This comes in at the very end when i click the 'finish' button
Code:
If Dir("C:\Users\Matt Taylor\Desktop\Backup\Backup.xml") <> "" Then
fjobdup()
Else
fJob()
End If
Where the "fJob()" function writes the xml the first time through. And the "fJobDup()" function should append the xml file and add the new information below the initial info. I'll post these functions below.
Code:
Public Function fjobdup() As String
Dim doc As new XmlDocument()
doc.Load("C:\Users\Matt Taylor\Desktop\Backup\Backup.xml")
Dim job As XmlElement = doc.CreateElement("Job")
Dim jName As XmlElement = doc.CreateElement("JobName")
Dim jsource As XmlElement = doc.CreateElement("Source")
Dim jdestin As XmlElement = doc.CreateElement("Destination")
Dim jtime As XmlElement = doc.CreateElement("Timestamp")
job.AppendChild(jName)
job.AppendChild(jsource)
job.AppendChild(jdestin)
job.AppendChild(jtime)
doc.DocumentElement.AppendChild(job)
jName.InnerText = JobName.Text.ToString()
Dim filesEnum3 As IEnumerator
filesEnum3 = OpenFileDialog1.FileNames.GetEnumerator()
While filesEnum3.MoveNext
jsource.InnerText = filesEnum3.Current.ToString
End While
jdestin.InnerText = boxDestin.Text.ToString()
jtime.InnerText = Now()
doc.Save("C:\Users\Matt Taylor\Desktop\Backup\Backup.xml")
End Function
Code:
Public Function fJob() As String
Dim Backxml As New XmlWriterSettings()
Backxml.Indent = True
Dim xmlwrt As XmlWriter = XmlWriter.Create("C:\Users\Matt Taylor\Desktop\Backup\Backup.xml", Backxml)
Dim filesEnum2 As IEnumerator
filesEnum2 = OpenFileDialog1.FileNames.GetEnumerator()
With xmlwrt
.WriteStartDocument()
.WriteComment("XML Backup.")
.WriteStartElement("Jobs")
.WriteStartElement("Job")
Dim jName As String = JobName.Text.ToString
.WriteElementString("JobName", jName.ToString)
While filesEnum2.MoveNext
.WriteStartElement("Source")
.WriteString(filesEnum2.Current)
.WriteEndElement()
End While
.WriteStartElement("Destination")
.WriteString(boxDestin.Text)
.WriteEndElement()
.WriteStartElement("Timestamp")
.WriteString(Now())
.WriteEndElement()
.WriteEndDocument()
.Close()
End With
End Function