У меня есть документ XML, который я ищу, чтобы найти дочерние элементы <isolationStep>
и <isolationProcedureEnd>
для <isolationMainProcedure>
. Я хочу установить id = (увеличенное число) для детей. Инкремент должен быть последовательным, и, если дочерний элемент является шагом, перед инкрементным значением перед ним стоит буква «S», для другого дочернего элемента - «E», так что id_S изоляция = «s1», изоляция ProcedureEnd = «e2», ИД изоляцияStep = = « s3 ', изоляцияStep ID =' s4 '. Мне трудно получить и установить значения дочерних узлов. Ваша помощь приветствуется.
xml образец
<content>
<faultIsolation>
<faultIsolationProcedure applicRefId="test" id="-1">
<isolationStep id="i1-001">
<isolationStepQuestion></isolationStepQuestion>
<isolationStepAnswer>
<yesNoAnswer>
<yesAnswer nextActionRefId="s1-003" />
<noAnswer nextActionRefId="e1-002" />
</yesNoAnswer>
</isolationStepAnswer>
</isolationStep>
<isolationProcedureEnd id="e1-002">
</isolationProcedureEnd>
<isolationStep id="i1-001a">
</isolationStep>
<isolationProcedureEnd id="e1-007">
</isolationProcedureEnd>
</faultIsolationProcedure>
</faultIsolation>
</content>
xml по примеру
<content>
<faultIsolation>
<faultIsolationProcedure applicRefId="Software_TCTO_609_701_718_739_POST" id="-1">
<isolationStep id="FI1s-1">
<isolationStepQuestion>Do this first</isolationStepQuestion>
<isolationStepAnswer>
<yesNoAnswer>
<yesAnswer nextActionRefId="FI1s-3" />
<noAnswer nextActionRefId="FI1e-5" />
</yesNoAnswer>
</isolationStepAnswer>
</isolationStep>
<isolationProcedureEnd id="FI1e-2">
</isolationProcedureEnd>
<isolationStep id="FI1s-3">
<isolationStepQuestion>Do this first</isolationStepQuestion>
</isolationStep>
<isolationStep id="FI1s-4">
<isolationStepQuestion>Do this first</isolationStepQuestion>
</isolationStep>
<isolationProcedureEnd id="FI1e-5">
</isolationProcedureEnd>
</faultIsolationProcedure>
</faultIsolation>
</content>
Код
Dim index As Integer = 1
For Each node As XmlElement In renumNodes.SelectNodes("isolationProcedure/isolationMainProcedure")
If node.Name = "isolationStep" Then
MsgBox("Found step")
For Each Attribute As XmlAttribute In node.Attributes
Dim existID = node.GetAttribute("id")
modExistID = "FI" + Count.ToString + "S-" + index.ToString
dictionaryNewID.Add(existID, modExistID)
node.SetAttribute("id", modExistID)
index += 1
Next
ElseIf node.Name = "isolationProcedureEnd" Then
For Each Attribute As XmlAttribute In node.Attributes
Dim existID = node.GetAttribute("id")
modExistID = "FI" + Count.ToString + "E-" + index.ToString
dictionaryNewID.Add(existID, modExistID)
node.SetAttribute("id", modExistID)
index += 1
Next
End If
Next