Imports System.IO
Module Module1
Sub Main()
Dim srcDir = ""
Dim dstDir = ""
If Not ReplaceTcParameters(srcDir, dstDir) Then
Console.WriteLine("Failed")
End If
Console.Read()
End Sub
Public Function ReplaceTcParameters(ByVal srcDir As String, ByVal dstDir As String)
Dim srcProfiles = New List(Of String)
Dim dstProfiles = New List(Of String)
Directory.GetDirectories(srcDir).ToList().ForEach(Sub(s)
srcProfiles.AddRange(Directory.GetFiles(s).Where(Function(t) Path.GetFileName(t).EndsWith(".xml")).ToList())
End Sub)
Directory.GetDirectories(dstDir).ToList().ForEach(Sub(s)
dstProfiles.AddRange(Directory.GetFiles(s).Where(Function(t) Path.GetFileName(t).EndsWith(".xml")).ToList())
End Sub)
srcProfiles.ForEach(Sub(s)
Dim fileName = Path.GetFileNameWithoutExtension(s)
Dim d = dstProfiles.Where(Function(t) Path.GetFileNameWithoutExtension(t) = fileName).FirstOrDefault()
If d <> "" Then
Dim srcDoc = XDocument.Load(s)
Dim desDoc = XDocument.Load(d)
ReplacePropertyElement(srcDoc, desDoc, "CaseKey")
ReplacePropertyElement(srcDoc, desDoc, "CaseTitle")
ReplaceGSMElement(srcDoc, desDoc, "LAC")
ReplaceGSMElement(srcDoc, desDoc, "MCC")
ReplaceGSMElement(srcDoc, desDoc, "MNC")
desDoc.Save(d)
End If
End Sub)
Return True
End Function
Public Sub ReplaceGSMElement(ByVal srcDoc As XDocument, ByVal desDoc As XDocument, ByVal nodeName As String)
Dim ele = GetGSMElement(srcDoc, nodeName)
Dim val = ele.Attributes("value").FirstOrDefault().Value
ele = GetGSMElement(desDoc, nodeName)
ele.Attributes("value").FirstOrDefault().Value = val
End Sub
Public Sub ReplacePropertyElement(ByVal srcDoc As XDocument, ByVal desDoc As XDocument, ByVal nodeName As String)
Dim ele = GetPropertyElement(srcDoc, nodeName)
Dim val = ele.Attributes("value").FirstOrDefault().Value
ele = GetPropertyElement(desDoc, nodeName)
ele.Attributes("value").FirstOrDefault().Value = val
End Sub
Public Function GetPropertyElement(ByVal doc As XDocument, ByVal name As String) As XElement
Return doc.Root.Elements.Where(Function(t) t.Name = "Properties").FirstOrDefault().Elements.ToList().Where(Function(t) t.Attributes("name").FirstOrDefault = name).FirstOrDefault()
End Function
Public Function GetGSMElement(ByVal doc As XDocument, ByVal name As String) As XElement 'GSM_Net1
Dim gsmNode = GetPropertyElement(doc, "GSM_Net1")
Return gsmNode.Elements.Where(Function(t) t.Name = "Properties").FirstOrDefault().Elements.ToList().Where(Function(t) t.Attributes("name").FirstOrDefault = name).FirstOrDefault()
End Function
End Module