Imports System.Xml Imports System.Xml.XmlDocument Imports System.Text.RegularExpressions Module Parsers Dim reader As XmlTextReader = Nothing 'Public reader2 As XmlTextReader = Nothing Public bscSwapXmlWriterSites As XmlTextWriter ' Public bscSwapXmlWriterIncAdce As XmlTextWriter ' Public bscSwapXmlWriterOutAdce As XmlTextWriter ' Public bscSwapXmlWriterLapd As XmlTextWriter ' Public bscSwapXmlWriterAdjw As XmlTextWriter 'Public bscSwapXmlWriterAdjg As XmlTextWriter Dim cnt As Integer = 0 ' element count Dim newAttr As XmlNode ' operation attribute Dim newAttrAmhLower As XmlNode ' operation attribute Dim newAttrAmhUpper As XmlNode ' operation attribute Dim newAttrAmhMax As XmlNode ' operation attribute Dim newAttrAmhTrho As XmlNode ' operation attribute Dim amhllThreshold As XmlNode Dim amhulThreshold As XmlNode Dim amhmaxlThreshold As XmlNode Dim trhoGt As XmlNode Dim myXmlDocument As XmlDocument Public Sub removeNodeBcf(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map 'fatal If CType(attrnode, XmlNode).Value = "flexiEdgeAbisOverIpEthernetUsage" Then node.RemoveChild(kid) removeNodeBcf(node) End If If CType(attrnode, XmlNode).Value = "flexiEdgeAdditional2E1T1Usage" Then node.RemoveChild(kid) removeNodeBcf(node) End If If CType(attrnode, XmlNode).Value = "flexiEdgeTrsAbisGroomingUsage" Then node.RemoveChild(kid) removeNodeBcf(node) End If If CType(attrnode, XmlNode).Value = "flexiEdgeTrsLoopProtectionUsage" Then node.RemoveChild(kid) removeNodeBcf(node) End If If CType(attrnode, XmlNode).Value = "syncSource" Then node.RemoveChild(kid) removeNodeBcf(node) End If Next attrnode End If Next kid End If End Sub Public Sub removeNodeBts(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "list" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "trafficTypesForTrunk" Then node.RemoveChild(kid) removeNodeBts(node) End If Next End If If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map 'fatal If CType(attrnode, XmlNode).Value = "antennaHopping" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "freeTchLimit" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "idrCellType" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "idrUsed" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "nbrTchForPrioritySubs" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "maioStep" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "priorityChUseIncomingHO" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "reservationMethod" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "trafficTypesForTrunk" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "trunkReservationUsed" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "radiusExtension" Then node.RemoveChild(kid) removeNodeBts(node) End If ' error parameters If CType(attrnode, XmlNode).Value = "idleStateBcchAllocIdUsed" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "usedMobileAllocIdUsed" Then node.RemoveChild(kid) removeNodeBts(node) End If If CType(attrnode, XmlNode).Value = "underlayMaIdUsed" Then node.RemoveChild(kid) removeNodeBts(node) End If 'segmentName If CType(attrnode, XmlNode).Value = "segmentName" Then node.RemoveChild(kid) removeNodeBts(node) End If Next attrnode End If Next kid End If End Sub Public Sub removeNodeHoc(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map 'fatal If CType(attrnode, XmlNode).Value = "ciEstMethod" Then node.RemoveChild(kid) removeNodeHoc(node) End If If CType(attrnode, XmlNode).Value = "invalidBsicReporting" Then node.RemoveChild(kid) removeNodeHoc(node) End If If CType(attrnode, XmlNode).Value = "lowerCiLimit" Then node.RemoveChild(kid) removeNodeHoc(node) End If If CType(attrnode, XmlNode).Value = "priorityAdjStep" Then node.RemoveChild(kid) removeNodeHoc(node) End If If CType(attrnode, XmlNode).Value = "reportingRate" Then node.RemoveChild(kid) removeNodeHoc(node) End If 'error If CType(attrnode, XmlNode).Value = "enableIntracellHandover" Then node.RemoveChild(kid) removeNodeHoc(node) End If Next attrnode End If Next kid End If End Sub Public Sub removeNodePoc(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object 'fatal For Each attrnode In map If CType(attrnode, XmlNode).Value = "bsTxPwrOffset" Then node.RemoveChild(kid) removeNodePoc(node) End If Next attrnode End If Next kid End If End Sub Public Sub getNodes(ByVal afile As String, ByVal lb As ListBox, ByVal sb As StatusBar) Try reader = New XmlTextReader(afile) ' Create an XmlDocument from the XmlTextReader myXmlDocument = New XmlDocument Dim namespaceManager As New XmlNamespaceManager(myXmlDocument.NameTable) namespaceManager.AddNamespace("ns", "raml20.dtd") sb.Text = "Loading XML document...." myXmlDocument.Load(reader) lb.Items.Add("XmlDocument loaded successfully ...") sb.Text = "XML document loaded successfully" ' Process the supplied XML file lb.Items.Add("Processing ...") sb.Text = "Processing ..." ' operation attribute newAttr = myXmlDocument.CreateAttribute("operation") newAttr.Value = "create" ' amhllThreshold.Attributes.SetNamedItem(newAttr1) 'amhllThreshold.InnerText = "N" ' Start from the document Element DisplayTree(myXmlDocument.DocumentElement, lb, sb) Catch e As Exception Console.WriteLine("Exception:" & e.ToString()) Finally If Not reader Is Nothing Then reader.Close() 'lb.Items.Add("") ' Process the supplied XML file lb.Items.Add("Document read finished") lb.Items.Add("") End If End Try sb.Text = "Reader closed" newAttrAmhLower = myXmlDocument.CreateAttribute("name") newAttrAmhLower.Value = "amhLowerLoadThreshold" newAttrAmhUpper = myXmlDocument.CreateAttribute("name") newAttrAmhUpper.Value = "amhUpperLoadThreshold" newAttrAmhMax = myXmlDocument.CreateAttribute("name") newAttrAmhMax.Value = "amhMaxLoadOfTgtCell" newAttrAmhTrho = myXmlDocument.CreateAttribute("name") newAttrAmhTrho.Value = "amhTrhoGuardTime" amhllThreshold = myXmlDocument.CreateElement("p") amhllThreshold.Attributes.Append(newAttrAmhLower) amhulThreshold = myXmlDocument.CreateElement("p") amhulThreshold.Attributes.Append(newAttrAmhUpper) amhmaxlThreshold = myXmlDocument.CreateElement("p") amhmaxlThreshold.Attributes.Append(newAttrAmhMax) trhoGt = myXmlDocument.CreateElement("p") trhoGt.Attributes.Append(newAttrAmhTrho) End Sub Public Sub DisplayTree(ByVal node As XmlNode, ByVal lb As ListBox, ByVal sb As StatusBar) If Not IsNothing(node) Then FormatAll(node, lb, sb) End If If node.HasChildNodes Then node = node.FirstChild While Not IsNothing(node) DisplayTree(node, lb, sb) node = node.NextSibling End While End If End Sub Private Sub FormatAll(ByVal node As XmlNode, ByVal lb As ListBox, ByVal sb As StatusBar) Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum Dim blnMatchBts As Boolean ' Dim blnMatchAdce As Boolean Dim blnMatchBcf As Boolean Dim blnMatchLapd As Boolean Dim blnMatchHoc As Boolean Dim blnMatchPoc As Boolean Dim blnMatchAdjl As Boolean Dim blnMatchTrx As Boolean ' Dim blnMatchAdjg As Boolean ' Dim blnMatchAdjw As Boolean ' Dim MatchAdjg As String = "ADJG" ' Dim MatchAdjw As String = "ADJW" Dim MatchBts As String = "BTS" Dim MatchBcf As String = "BCF" Dim MatchTrx As String = "TRX" Dim MatchHoc As String = "HOC" Dim MatchPoc As String = "POC" Dim MatchAdjl As String = "ADJL" Dim MatchLapd As String = "LAPD" ' Dim MatchAdce As String = "ADCE" If XmlNodeType.Element = node.NodeType Then If node.Name = "managedObject" Then 'remove the id attribute node.Attributes.RemoveNamedItem("id") ' ad the operation attribute node.Attributes.SetNamedItem(newAttr) End If Dim map As XmlNamedNodeMap = node.Attributes Dim attrnode As XmlAttribute For Each attrnode In map If CType(attrnode, XmlNode).Name = "class" Then ' node.Attributes.GetNamedItem("id").Value = Regex.Replace( _ ' node.Attributes.GetNamedItem("id").Value, node.Attributes.GetNamedItem( _ ' "id").Value, "create") ' blnMatchAdjw = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchAdjw) ' blnMatchAdjg = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchAdjg) blnMatchBcf = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchBcf) blnMatchBts = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchBts) blnMatchTrx = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchTrx) blnMatchHoc = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchHoc) blnMatchPoc = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchPoc) blnMatchAdjl = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchAdjl) blnMatchLapd = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchLapd) ' blnMatchAdce = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchAdce) If blnMatchBcf = True Then ' removeId(node) changeCNum(node) removeLapdLinkNum(node) 'remove lapdlinknumber changeLapdLinkNameInBcf(node, lb, sb) removeNodeBcf(node) updateAddressNode(node) changeAdminState(node) If Reparent.CheckBox1.Checked Then changeETPinBCF(node) ' SF 21/08/2024 see below for full function. Fully working. AddLogicalBcxuAddressElement(node) ' SF 21/08/2024 see below for full function! Fully working. AddPrimaryBCF(node) ' SF 26/09/24 added this but why did I not earlier? End If bcfCol.Add(node) bcfCnt = bcfCnt + 1 'getLac(node, myCell) End If If blnMatchBts = True Then 'removeId(node) changeRac(node) changeSeg(node) changeCNum(node) changeLac(node, lb, sb) ' and remove gprs removeNodeBts(node) updateAddressNode(node) changeCellBroadcast(node) changeMalId(node) If Reparent.CheckBox1.Checked Then AddPrimaryBCF(node) ' SF 21/08/2024 see below for full function! Fully working. End If 'insertAmhParas(node) btsCol.Add(node) btsCnt = btsCnt + 1 End If If blnMatchTrx = True Then 'removeId(node) changeCNum(node) changePcmInTrx(node) removeLapdLinkNum(node) ' remove lapdlinknumber changeLapdLinkNameInTrx(node) updateAddressNode(node) modifySDCCB(node) trxCol.Add(node) trxCnt = trxCnt + 1 End If If blnMatchHoc = True Then 'removeId(node) changeCNum(node) removeNodeHoc(node) updateAddressNode(node) hocCol.Add(node) hocCnt = hocCnt + 1 End If If blnMatchPoc = True Then changeCNum(node) removeNodePoc(node) updateAddressNode(node) pocCol.Add(node) pocCnt = pocCnt + 1 End If If blnMatchAdjl = True Then changeCNum(node) adjlCol.Add(node) adjlCnt = adjlCnt + 1 End If ' If blnMatchAdce = True Then ' checkDirection(node) ' adceCnt = adceCnt + 1 ' End If ' If blnMatchAdjw = True Then 'changeCNumAdjwMerge(node, lb, sb) ' this is the merge version which changes BCF/BTS as well! 'adjwCol.Add(node) ' adjwCnt = adjwCnt + 1 'End If ' If blnMatchAdjg = True Then ' changeTargetCellDnAdjg(node, lb, sb) ' changeTargetCellDnAdjgBcf(node, lb, sb) ' changeTargetCellDnAdjgBts(node, lb, sb) 'changeLacAdjg(node, lb, sb) 'adjgCol.Add(node) ' adjgCnt = adjgCnt + 1 ' End If End If Next attrnode End If ' XmlNodeType.Element = node.NodeType End Sub Public Sub insertAmhParas(ByVal node As XmlNode) 'node.AppendChild(amhllThreshold) ' node.AppendChild(amhulThreshold) 'node.AppendChild(amhmaxlThreshold) ' node.AppendChild(trhoGt) End Sub Public Sub checkDirection(ByVal node As XmlNode) Dim oldCNumStr As String = "BSC-" & oldCNum Dim blnMatchCNum As Boolean = False If XmlNodeType.Element = node.NodeType Then 'If CType(node, XmlNode).Name = "managedObject" Then Dim map As XmlNamedNodeMap = node.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Name = "distName" Then blnMatchCNum = Regex.IsMatch(CType(attrnode, XmlNode).Value, oldCNumStr) If blnMatchCNum = True Then 'this is outgoing changeTargetCellDnAdjg(node) changeTargetCellDnAdjgBcf(node) changeTargetCellDnAdjgBts(node) changeCNum(node) ' changeCNumAdce(node) 'removeTargetCellDN(node) outAdceCol.Add(node) outAdceCnt = outAdceCnt + 1 ElseIf blnMatchCNum = False Then 'This is incomig changeTargetCellDnAdjg(node) changeTargetCellDnAdjgBcf(node) changeTargetCellDnAdjgBts(node) changeCNum(node) changeCNumIncAdce(node) ' removeTargetCellDN(node) incAdceCol.Add(node) incAdceCnt = incAdceCnt + 1 End If End If Next attrnode 'End If End If End Sub Public Sub changeTargetCellDnAdjg(ByVal node As XmlNode) 'cnum Dim blnMatchCNum As Boolean Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object Dim found As Boolean For Each attrnode In map If CType(attrnode, XmlNode).Value = "targetCellDN" Then blnMatchCNum = Regex.IsMatch(CType(kid, XmlNode).InnerText, oldCNumStr) If blnMatchCNum = True Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ oldCNumStr, modCNum) End If End If Next attrnode End If Next kid End If End Sub Public Sub changeTargetCellDnAdjgBcf(ByVal node As XmlNode) 'bcf Dim blnMatchCNumOld As Boolean Dim blnMatchCNumNew As Boolean Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object Dim found As Boolean For Each attrnode In map If CType(attrnode, XmlNode).Value = "targetCellDN" Then blnMatchCNumOld = Regex.IsMatch(CType(kid, XmlNode).InnerText, oldCNumStr) blnMatchCNumNew = Regex.IsMatch(CType(kid, XmlNode).InnerText, modCNum) If blnMatchCNumOld = True OrElse blnMatchCNumNew = True Then Dim bf As Bcf For Each bf In chgBcfCol Dim bcfId As Match Dim newBcfId As String = "BCF-" & bf.newIndex bcfId = Regex.Match(CType(kid, XmlNode).InnerText, "BCF-[0-9]{1,4}") If bcfId.Value.Equals("BCF-" & bf.oldIndex) Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, bcfId.Value, newBcfId) End If Next bf End If End If Next attrnode End If Next kid End If End Sub Public Sub changeTargetCellDnAdjgBts(ByVal node As XmlNode) 'bts Dim blnMatchCNumOld As Boolean Dim blnMatchCNumNew As Boolean Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object Dim found As Boolean For Each attrnode In map If CType(attrnode, XmlNode).Value = "targetCellDN" Then blnMatchCNumOld = Regex.IsMatch(CType(kid, XmlNode).InnerText, oldCNumStr) blnMatchCNumNew = Regex.IsMatch(CType(kid, XmlNode).InnerText, modCNum) If blnMatchCNumOld = True OrElse blnMatchCNumNew = True Then Dim bt As Bts For Each bt In chgBtsCol Dim btsId As Match Dim newBtsId As String = "BTS-" & bt.newIndex btsId = Regex.Match(CType(kid, XmlNode).InnerText, "BTS-[0-9]{1,4}") If btsId.Value.Equals("BTS-" & bt.oldIndex) Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, btsId.Value, newBtsId) End If Next bt End If End If Next attrnode End If Next kid End If End Sub Public Sub changeCNumAdjwMerge(ByVal node As XmlNode, ByVal lb As ListBox, ByVal sb As StatusBar) 'Sw version changed to S11.5 ' for bsc merge, need to change BCF & BTS IDs as well as CNum if Cnum matches. Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum Dim blnMatchCNum As Boolean If XmlNodeType.Element = node.NodeType Then 'If CType(node, XmlNode).Name = "managedObject" Then Dim map As XmlNamedNodeMap = node.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Name = "distName" Then blnMatchCNum = Regex.IsMatch(CType(attrnode, XmlNode).Value, oldCNumStr) If blnMatchCNum = True Then 'if matches old cnumber Dim bf As Bcf For Each bf In chgBcfCol Dim bcfId As Match Dim newBcfId As String = "BCF-" & bf.newIndex bcfId = Regex.Match(CType(attrnode, XmlNode).Value, "/BCF-[0-9]{1,4}") If bcfId.Value.Equals("BCF-" & bf.oldIndex) Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, bcfId.Value, newBcfId) End If Next bf Dim bt As Bts For Each bt In chgBtsCol Dim btsId As Match Dim newBtsId As String = "/BTS-" & bt.newIndex btsId = Regex.Match(CType(attrnode, XmlNode).Value, "/BTS-[0-9]{1,4}") If btsId.Value.Equals("BTS-" & bt.oldIndex) Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, btsId.Value, newBtsId) End If Next bt End If 'blnMatchBcfInDn = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchBcfInDn) 'Change old cnumber to new CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, _ oldCNumStr, modCNum) End If If CType(attrnode, XmlNode).Name = "version" Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, _ CType(attrnode, XmlNode).Value, SwVersion) End If ' If CType(attrnode, XmlNode).Name = "id" Then ' node.Attributes.Remove(attrnode) 'End If Next attrnode 'End If End If End Sub Public Sub removeLapdLinkNum(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "lapdLinkNumber" Then node.RemoveChild(kid) End If Next attrnode End If Next kid End If End Sub Public Sub changeLac(ByVal node As XmlNode, ByVal lb As ListBox, ByVal sb As StatusBar) ' find lac element.. 'gprsEnabled change to zero '

6251

remove element '

85

255 If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "locationAreaIdLAC" Then 'MsgBox("match lac node!") If CType(kid, XmlNode).InnerText = oldO2Lac Then CType(kid, XmlNode).InnerText = newO2Lac ElseIf CType(kid, XmlNode).InnerText = oldVfLac Then CType(kid, XmlNode).InnerText = newVfLac End If End If ' If CType(attrnode, XmlNode).Value = "gprsEnabled" Then 'MsgBox("match gena node!") 'CType(kid, XmlNode).InnerText = "0" ' End If ' If CType(attrnode, XmlNode).Value = "rac" Then 'MsgBox("match rac node!") 'CType(kid, XmlNode).InnerText = newO2RacVal ' End If If CType(attrnode, XmlNode).Value = "nsei" Then 'MsgBox("match nsei node!") node.RemoveChild(kid) End If Next attrnode End If Next kid End If End Sub Public Sub changeRac(ByVal node As XmlNode) ' find lac element.. 'gprsEnabled change to zero '

6251

remove element '

85

255 If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "rac" Then 'MsgBox("match rac node!") If CType(kid, XmlNode).InnerText = oldO2Rac Then CType(kid, XmlNode).InnerText = newO2Rac ElseIf CType(kid, XmlNode).InnerText = oldVfRac Then CType(kid, XmlNode).InnerText = newVfRac End If End If Next attrnode End If Next kid End If End Sub Public Sub changeSeg(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "segmentId" Then 'MsgBox("match segmentId node!") Dim s As Bts Dim segId As Match segId = Regex.Match(CType(kid, XmlNode).InnerText, "[0-9]{1,4}") For Each s In chgBtsCol Dim newSegId As String = s.newSeg If segId.Value.Equals(s.oldSeg) Then 'CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, segId.Value, newSegId) CType(kid, XmlNode).InnerText = s.newSeg Exit Sub End If Next s End If Next attrnode End If Next kid End If End Sub Public Sub updateAddressNode(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "address" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = oldBscName Then CType(kid, XmlNode).InnerText = newBscName End If End If Next attrnode End If Next kid End If End Sub Public Sub changeAdminState(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "adminState" Then 'MsgBox("match segmentId node!") CType(kid, XmlNode).InnerText = "3" End If Next attrnode End If Next kid End If End Sub Public Sub modifySDCCB(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "channel0Type" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = "8" Then CType(kid, XmlNode).InnerText = "3" End If End If If CType(attrnode, XmlNode).Value = "channel1Type" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = "8" Then CType(kid, XmlNode).InnerText = "3" End If End If If CType(attrnode, XmlNode).Value = "channel2Type" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = "8" Then CType(kid, XmlNode).InnerText = "3" End If End If If CType(attrnode, XmlNode).Value = "channel3Type" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = "8" Then CType(kid, XmlNode).InnerText = "3" End If End If If CType(attrnode, XmlNode).Value = "channel4Type" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = "8" Then CType(kid, XmlNode).InnerText = "3" End If End If If CType(attrnode, XmlNode).Value = "channel5Type" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = "8" Then CType(kid, XmlNode).InnerText = "3" End If End If If CType(attrnode, XmlNode).Value = "channel6Type" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = "8" Then CType(kid, XmlNode).InnerText = "3" End If End If If CType(attrnode, XmlNode).Value = "channel7Type" Then 'MsgBox("match segmentId node!") If CType(kid, XmlNode).InnerText = "8" Then CType(kid, XmlNode).InnerText = "3" End If End If Next attrnode End If Next kid End If End Sub Public Sub changeMalId(ByVal node As XmlNode) 'get BTS ID for MAL ID modification Dim btsid As String = "" If XmlNodeType.Element = node.NodeType Then 'If CType(node, XmlNode).Name = "managedObject" Then Dim map As XmlNamedNodeMap = node.Attributes Dim attr As Object For Each attr In map If CType(attr, XmlNode).Name = "distName" Then Dim btsreg As String = "PLMN-PLMN/BSC-(?(\d+))/BCF-\d+/BTS-(?(\d+))$" btsid = Regex.Match(CType(attr, XmlNode).Value, btsreg).Groups("bts").ToString Exit For End If Next attr End If If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "usedMobileAllocation" Then 'MsgBox("match segmentId node!") Dim mal As String = CType(kid, XmlNode).InnerText ' If mal = "0" OrElse mal = "1" OrElse mal = "2" OrElse mal = "3" OrElse mal = "1001" OrElse mal = "1002" OrElse mal = "1003" Then 'do nothing 'Else CType(kid, XmlNode).InnerText = btsid ' End If End If Next attrnode End If Next kid End If End Sub Public Sub changeCellBroadcast(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "smsCbUsed" Then 'MsgBox("match segmentId node!") CType(kid, XmlNode).InnerText = "0" End If Next attrnode End If Next kid End If End Sub Public Sub changeCNum(ByVal node As XmlNode) 'Sw version changed to S11.5 ' for bsc merge, need to change BCF & BTS IDs as well as CNum if Cnum matches. Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum Dim blnMatchCNum As Boolean If XmlNodeType.Element = node.NodeType Then 'If CType(node, XmlNode).Name = "managedObject" Then Dim map As XmlNamedNodeMap = node.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Name = "distName" Then blnMatchCNum = Regex.IsMatch(CType(attrnode, XmlNode).Value, oldCNumStr) If blnMatchCNum = True Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, _ oldCNumStr, modCNum) Dim bcfId As Match bcfId = Regex.Match(CType(attrnode, XmlNode).Value, "BCF-[0-9]{1,4}") Dim bf As Bcf For Each bf In chgBcfCol Dim newBcfId As String = "BCF-" & bf.newIndex If bcfId.Value.Equals("BCF-" & bf.oldIndex) Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, bcfId.Value, newBcfId) Exit For End If Next bf Dim bt As Bts Dim btsId As Match btsId = Regex.Match(CType(attrnode, XmlNode).Value, "BTS-[0-9]{1,4}") For Each bt In chgBtsCol Dim newBtsId As String = "BTS-" & bt.newIndex If btsId.Value.Equals("BTS-" & bt.oldIndex) Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, btsId.Value, newBtsId) Exit For End If Next bt End If 'blnMatchBcfInDn = Regex.IsMatch(CType(attrnode, XmlNode).Value, MatchBcfInDn) End If If CType(attrnode, XmlNode).Name = "version" Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, _ CType(attrnode, XmlNode).Value, SwVersion) End If ' If CType(attrnode, XmlNode).Name = "id" Then ' node.Attributes.Remove(attrnode) 'End If Next attrnode 'End If End If End Sub Public Sub changeCNumIncAdce(ByVal node As XmlNode) ' changes to new RAC value for incoming ADCE Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map ' If CType(attrnode, XmlNode).Value = "targetCellDN" Then 'node.RemoveChild(kid) 'End If If CType(attrnode, XmlNode).Value = "rac" Then 'remove rac 'node.RemoveChild(kid) ' CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ ' CType(kid, XmlNode).InnerText, newO2RacVal) CType(kid, XmlNode).InnerText = newO2Rac End If Next attrnode End If Next kid End If End Sub Public Sub changePcmInTrx(ByVal node As XmlNode) ' ### this version handles both TRX formats ### If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "channel0Pcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If If CType(attrnode, XmlNode).Value = "channel1Pcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If If CType(attrnode, XmlNode).Value = "channel2Pcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If If CType(attrnode, XmlNode).Value = "channel3Pcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If If CType(attrnode, XmlNode).Value = "channel4Pcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If If CType(attrnode, XmlNode).Value = "channel5Pcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If If CType(attrnode, XmlNode).Value = "channel6Pcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If If CType(attrnode, XmlNode).Value = "channel7Pcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If Next attrnode End If If kid.HasChildNodes = True Then Dim kid2 As Object For Each kid2 In kid.ChildNodes If kid2.HasChildNodes = True Then Dim kid3 As Object For Each kid3 In kid2.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid3, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid3.Attributes Dim attrnode As Object For Each attrnode In map 'chPcm If CType(attrnode, XmlNode).Value = "chPcm" Then ' CType(kid, XmlNode).InnerText = dummyLac Dim p As Pcm For Each p In pcmCol If CType(kid3, XmlNode).InnerText = p.oldIndex Then CType(kid3, XmlNode).InnerText = Regex.Replace(CType(kid3, XmlNode).InnerText, _ CType(kid3, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If Next attrnode End If Next kid3 End If Next kid2 End If Next kid End If End Sub Public Sub changePcmInLapd(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "abisSigChannelTimeSlotPcm" Then ' CType(kid, XmlNode).InnerText = dummyLac 'abisSigChannelTimeSlotPcm Dim p As Pcm For Each p In pcmCol If CType(kid, XmlNode).InnerText = p.oldIndex Then CType(kid, XmlNode).InnerText = Regex.Replace(CType(kid, XmlNode).InnerText, _ CType(kid, XmlNode).InnerText, p.newIndex) Exit For End If Next p End If Next attrnode End If Next kid End If End Sub Public Function getNewBcfIdForLapd(ByVal oldname As String) As String ' need to convert to int from hex Dim newbcfid As String = "" Dim bf As Bcf For Each bf In chgBcfCol ' Dim bcfinhex As String = Conversion.Hex(bf.oldIndex) 'MsgBox("Oldname: " & oldname & " bcfid old: " & newbcfid) If Conversion.Hex(bf.oldIndex) = oldname Then Try newbcfid = Conversion.Hex(bf.newIndex) 'MsgBox("newname: " & newbcfid) Catch ex As Exception MsgBox("new bcfid conversion error: " & ex.Message) End Try End If Next bf Return newbcfid End Function Public Sub changeLapdLinkNameInBcf(ByVal node As XmlNode, ByVal lb As ListBox, ByVal sb As StatusBar) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "lapdLinkName" Then 'MsgBox("match lapd node!") 'get name and transform to new name based on BCFID '1. get name Dim lapdName As Match lapdName = Regex.Match(CType(kid, XmlNode).InnerText, "BS[0-9A-F]{3}") 'MsgBox("LAPD Name: " & lapdName.Value) '1.1 determine whether bcf lapd or trx lapd Dim lapdType As Match lapdType = Regex.Match(CType(kid, XmlNode).InnerText, "BS") ' MsgBox("Type: " & lapdType.Value) If lapdType.Value = "BS" Then ' MsgBox("LAPD Name: " & lapdName.Value & " TYPE: BCF") '3. If BCF lapd (begins with U) '3.1 get old BCFID '3.2 remove leading zeros from old bcfid Dim oldname As String = lapdName.Value oldname = Regex.Replace(oldname, "BS00", "") oldname = Regex.Replace(oldname, "BS0", "") oldname = Regex.Replace(oldname, "BS", "") 'MsgBox("old bcf: " & oldname & " original value: " & lapdName.Value) 'Dim newbcfid As String = getNewBcfIdForLapd(oldname) '3.3 match old bcfid with new bcfid '3.3.1 pad new bcfid with leading zeroes if necessary '3.4 concat U & new bfid Dim newbcfid As String = getNewBcfIdForLapd(oldname) Dim replacementName As String If newbcfid <> "" Then If newbcfid.Length = 3 Then Dim newname As String = "BS" & newbcfid replacementName = newname CType(kid, XmlNode).InnerText = newname 'MsgBox("old lapd name: " & lapdName.Value & " New lapd name: " & newname) ElseIf newbcfid.Length = 2 Then Dim newname As String = "BS0" & newbcfid replacementName = newname CType(kid, XmlNode).InnerText = newname 'MsgBox("old lapd name: " & lapdName.Value & " New lapd name: " & newname) ElseIf newbcfid.Length = 1 Then Dim newname As String = "BS00" & newbcfid replacementName = newname CType(kid, XmlNode).InnerText = newname 'MsgBox("old lapd name: " & lapdName.Value & " New lapd name: " & newname) Else MsgBox("Error producing new LAPD name - length not 1-3") End If Else ' MsgBox("Error in BCF ID match routine!") End If Else MsgBox("Error in BCF LAPD BCFID match routine! Could not match U or T") End If 'End of if/elseif/else block T or U End If ' attribute is name Next attrnode End If ' is p element Next kid End If 'childnodes End Sub ' ###### SF 23/08/24 ###### below 3 functions are added for Airscale work. ' added below for changing ETP in BCF. Working 22/08/24 Public Sub changeETPinBCF(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "usedEtpId" Then CType(kid, XmlNode).InnerText = "255" End If Next attrnode End If Next kid End If End Sub ' Adds a new

element with name="logicalBcxuAddress" to all "managedObject" elements with class="BCF" Public Sub AddLogicalBcxuAddressElement(ByVal node As XmlNode) If node.Name = "managedObject" AndAlso node.Attributes IsNot Nothing Then Dim classAttr As XmlAttribute = node.Attributes("class") If classAttr IsNot Nothing AndAlso classAttr.Value = "BCF" Then ' Create the new

element within the same namespace as the parent node Dim newElement As XmlElement = node.OwnerDocument.CreateElement("p", node.NamespaceURI) newElement.SetAttribute("name", "logicalBcxuAddress") newElement.InnerText = "1" node.AppendChild(newElement) End If End If ' Recursively call the function for child nodes If node.HasChildNodes Then For Each childNode As XmlNode In node.ChildNodes AddLogicalBcxuAddressElement(childNode) Next End If End Sub ' Adds attribute "primaryBcf" to all "bts" elements Public Sub AddPrimaryBCF(ByVal node As XmlNode) If node.Name = "managedObject" AndAlso node.Attributes IsNot Nothing Then Dim classAttr As XmlAttribute = node.Attributes("class") If classAttr IsNot Nothing AndAlso classAttr.Value = "BTS" Then ' Create the new

element within the same namespace as the parent node Dim newElement As XmlElement = node.OwnerDocument.CreateElement("p", node.NamespaceURI) newElement.SetAttribute("name", "primaryBcf") newElement.InnerText = "1" node.AppendChild(newElement) End If End If ' Recursively call the function for child nodes If node.HasChildNodes Then For Each childNode As XmlNode In node.ChildNodes AddPrimaryBCF(childNode) Next End If End Sub Public Sub changeLapdLinkNameInTrx(ByVal node As XmlNode) If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Value = "lapdLinkName" Then 'MsgBox("match lapd node!") 'get name and transform to new name based on BCFID '1. get name Dim lapdNameBcf As String lapdNameBcf = Regex.Match(CType(kid, XmlNode).InnerText, "T(?([A-F0-9]{3}))(?([A-Z0-9]{1}))").Groups("bcf").ToString 'MsgBox("LAPD Name: " & lapdName.Value) '1.1 determine whether bcf lapd or trx lapd Dim lapdType As Match lapdType = Regex.Match(CType(kid, XmlNode).InnerText, "T") ' MsgBox("Type: " & lapdType.Value) If lapdType.Value = "T" Then 'MsgBox("LAPD Name: " & lapdName.Value & " TYPE: TRX") Dim oldname As String = lapdNameBcf 'need TRXID if type = T Dim trxid As String trxid = Regex.Match(CType(kid, XmlNode).InnerText, "T(?([A-F0-9]{3}))(?([A-Z0-9]{1}))").Groups("trx").ToString lapdNameBcf = Regex.Replace(lapdNameBcf, "^00", "") lapdNameBcf = Regex.Replace(lapdNameBcf, "^0", "") ' MsgBox("TRXBCF: " & oldName3) Dim newbcfid As String = getNewBcfIdForLapd(lapdNameBcf) If newbcfid <> "" Then If newbcfid.Length = 3 Then Dim newname As String = "T" & newbcfid & trxid CType(kid, XmlNode).InnerText = newname 'MsgBox("old lapd name: " & lapdName.Value & " New lapd name: " & newname) ElseIf newbcfid.Length = 2 Then Dim newname As String = "T0" & newbcfid & trxid CType(kid, XmlNode).InnerText = newname 'MsgBox("old lapd name: " & lapdName.Value & " New lapd name: " & newname) ElseIf newbcfid.Length = 1 Then Dim newname As String = "T00" & newbcfid & trxid CType(kid, XmlNode).InnerText = newname 'MsgBox("old lapd name: " & lapdName.Value & " New lapd name: " & newname) Else MsgBox("Error producing new LAPD name - BCFID length not 1-3") End If End If Else MsgBox("Error in TRX LAPD BCFID match routine! Could not match T") End If 'End of if/elseif/else block T End If ' attribute is name Next attrnode End If ' is p element Next kid End If 'childnodes End Sub Public Sub removeTargetCellDN(ByVal node As XmlNode) Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum If node.HasChildNodes = True Then Dim kid As Object For Each kid In node.ChildNodes 'lb.Items.Add(CType(kid, XmlNode).Name) If CType(kid, XmlNode).Name = "p" Then Dim map As XmlNamedNodeMap = kid.Attributes Dim attrnode As Object Dim found As Boolean For Each attrnode In map If CType(attrnode, XmlNode).Value = "targetCellDN" Then node.RemoveChild(kid) End If Next attrnode End If Next kid End If End Sub Public Sub changeCNumAdjwSwap(ByVal node As XmlNode, ByVal lb As ListBox, ByVal sb As StatusBar) Dim modCNum As String = "BSC-" & newCNum Dim oldCNumStr As String = "BSC-" & oldCNum If XmlNodeType.Element = node.NodeType Then 'If CType(node, XmlNode).Name = "managedObject" Then Dim map As XmlNamedNodeMap = node.Attributes Dim attrnode As Object For Each attrnode In map If CType(attrnode, XmlNode).Name = "distName" Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, _ oldCNumStr, modCNum) End If If CType(attrnode, XmlNode).Name = "version" Then CType(attrnode, XmlNode).Value = Regex.Replace(CType(attrnode, XmlNode).Value, _ CType(attrnode, XmlNode).Value, SwVersion) End If ' If CType(attrnode, XmlNode).Name = "id" Then ' node.Attributes.Remove(attrnode) 'End If Next attrnode 'End If End If End Sub End Module