だから私はこのようなXMLを持っています...
<?xml version="1.0" encoding="UTF-8"?>
<!--XML Backup.-->
-<Jobs>
-<Job>
<JobName>a</JobName>
<Source>C:\Users\Public\Pictures\Samplepictures\Lighthouse.jpg</Source>
<Source>C:\Users\Public\Pictures\Sample Pictures\Penguins.jpg</Source>
<Source>C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg</Source>
<Destination>C:\Users\Public\Pictures\Sample Pictures\a.zip</Destination>
<Timestamp>11/26/2012 6:18:00 PM</Timestamp>
</Job>
-<Job>
<JobName>b</JobName>
<Source>C:\Users\Public\Pictures\demo photo\1 - Copy.JPG</Source>
<Source>C:\Users\Public\Pictures\demo photo\1.JPG</Source>
<Source>C:\Users\Public\Pictures\demo photo\2 - Copy.JPG</Source>
<Destination>C:\Users\Public\Pictures\demo photo\b.zip</Destination>
<Timestamp>11/26/2012 6:18:19 PM</Timestamp>
</Job>
</Jobs>
そして、「Job」というラベルの付いた各親ノードを圧縮する必要があります。したがって、最初の zip は "a.zip" で、"tulips.jpg"、"lighthouse.jpg"、"penguins.jpg" が含まれています。
2 番目の zip は、それぞれのファイルを含む "b.zip" になります。
現在、正しい宛先に「a.zip」と「b.zip」を取得していますが、各zipにはすべてのファイルが含まれています。
私が今持っているコードは次のとおりです。
Dim JobNodes As XmlNodeList
Dim JobNode As XmlNode
Dim baseDataNodes As XmlNodeList
Dim bFirstInRow As Boolean
JobNodes = doc.GetElementsByTagName("Job")
For Each jobNode In JobNodes
baseDataNodes = JobNode.ChildNodes
bFirstInRow = True
For Each baseDataNode As XmlNode In baseDataNodes
Dim Source = baseDataNode.SelectNodes("descendant::Source")
Dim Destin = baseDataNode.SelectNodes("descendant::Destination")
Using zip As New ZipFile()
For Each item As System.Xml.XmlElement In Source
zip.AddFile(item.InnerText, "Archive_" & DateString)
Next
For Each item As System.Xml.XmlElement In Destin
zip.Save(item.InnerText)
Next
End Using
Console.Write(vbCrLf)
Console.Write(baseDataNode.Name & ": " & baseDataNode.InnerText)
Next
Console.Write(vbCrLf)
Console.Write(vbCrLf)
Next
また、「descendant::」が必要かどうかも知りたいです...もしそうなら、それは何をしますか?