У меня есть существующий список узлов, имеющий три узла. Их значения таковы:
exixtingNods=
childIP childPort childSecure childProxyId
------- -------- ----------- ------------
1.1.1.1 8888 true 1
1.1.1.2 8886 true 2
1.1.1.3 8888 true 3
dataobject
childIP childPort childSecure childProxyId
------- -------- ----------- ------------
1.1.1.1 8888 true 1
Код:
$existingNods = $xmlData.SelectNodes("//parent/childInfo/child")
if ([string]::IsNullOrEmpty($existingNods)) {
Write-Host "created childInfo for ******************** "$dataObject.childIP
$childProxyInfo = $xmlData.CreateElement("dakotaProxyInfo")
$childIP = $xmlData.CreateElement("childIP")
$childPort = $xmlData.CreateElement("childPort")
$childSecure = $xmlData.CreateElement("childSecure")
$childProxyId = $xmlData.CreateElement("childProxyId ")
# Setting the childNode values
$childIP.set_InnerXML($dataObject.childIP)
$childPort.set_InnerXML($dataObject.childPort)
$childSecure.set_InnerXML($dataObject.childSecure)
$childProxyId.set_InnerXML($dataObject.childProxyId)
$childProxyInfo.AppendChild($childIP)
$childProxyInfo.AppendChild($childPort)
$childProxyInfo.AppendChild($childSecure)
$childProxyInfo.AppendChild($childProxyId)
$xmlData.SelectSingleNode("//parent/childInfo").AppendChild($childProxyInfo)
$xmlData.Save($xmlPath)
} else {
$xmlData.SelectNodes("//parent/childInfo") | ForEach-Object {
if (!($_.childProxyId -eq $dataObject.childProxyId)){
Write-Host "dakota already exist-" $_.childProxyId
break
} else {
Write-Host "created childInfo for ******************** "$dataObject.childIP
$childProxyInfo = $xmlData.CreateElement("dakotaProxyInfo")
$childIP = $xmlData.CreateElement("childIP")
$childPort = $xmlData.CreateElement("childPort")
$childSecure = $xmlData.CreateElement("childSecure")
$childProxyId = $xmlData.CreateElement("childProxyId")
$childIP.set_InnerXML($dataObject.childIP)
$childPort.set_InnerXML($dataObject.childPort)
$childSecure.set_InnerXML($dataObject.childSecure)
$childProxyId.set_InnerXML($dataObject.childProxyId)
$childProxyInfo.AppendChild($childIP)
$childProxyInfo.AppendChild($childPort)
$childProxyInfo.AppendChild($childSecure)
$childProxyInfo.AppendChild($childProxyId)
$xmlData.SelectSingleNode("//parent/childInfo").AppendChild($childProxyInfo)
$xmlData.Save($xmlPath)
}
}
}
С помощью приведенного выше кода я пытаюсь создать новый узел childinfo на основе $dataobject
. Эта часть работает нормально. В части else
я проверяю, имеет ли существующий узел такой же childProxyId в объекте данных. Если он существует, тот же узел не должен быть создан снова. В настоящее время он снова дублирует узел с тем же childProxyId. Что не так в моем коде?