PowerShell innerText для поиска значений - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть существующий список узлов, имеющий три узла. Их значения таковы:

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. Что не так в моем коде?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...