7

我正在尝试检查特定节点是否存在,如下所示。

在我的配置文件中有一个名为 client 的节点,它可能可用也可能不可用。

如果它不可用,我必须添加它。

    $xmldata = [xml](Get-Content $webConfig)    

        $xpath="//configuration/system.serviceModel"    
        $FullSearchStr= Select-XML -XML $xmldata -XPath $xpath

If ( $FullSearchStr -ne $null) {  

        #Add client node
        $client = $xmldata.CreateElement('Client')
        $client.set_InnerXML("$ClientNode")
        $xmldata.configuration."system.serviceModel".AppendChild($client) 
        $xmldata.Save($webConfig) 

    }

我正在检查的条件可能会返回数组。

我想检查客户端节点之前是否可用?

4

3 回答 3

9

您可以尝试 SelectSingleNode 方法:

$client = $xmldata.SelectSingleNode('//configuration/system.serviceModel/Client')

if(-not $client)
{
    $client = $xmldata.CreateElement('Client')
    ...
}
于 2012-10-23T13:33:31.610 回答
4

为什么你不能这样做:

$xmldata = [xml](Get-Content $webConfig)    
$FullSearchStr = $xmldata.configuration.'system.serviceModel'    
于 2012-10-24T06:05:07.083 回答
3

您也可以像布尔值一样使用“计数”

if ($xmldata.SelectSingleNode('//configuration/system.serviceModel/Client').Count)
{
 The count is 1 or more, so it exists
}
else
{
 The count is 0, so it doesn't exists
}
于 2016-09-23T05:48:32.243 回答