2012-10-23 6 views
6

Sto cercando di verificare se un nodo particolare esiste o meno come segue.Come verificare se un nodo esiste o non utilizza PowerShell senza ottenere un'eccezione?

Nel mio file di configurazione è presente un nodo denominato client, che potrebbe essere disponibile o meno.

Se non è disponibile devo aggiungerlo.

$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) 

    } 

La condizione che sto verificando può restituire array.

Vorrei verificare se il nodo client è disponibile prima o no?

risposta

4

Perché non puoi semplicemente fare qualcosa di simile:

$xmldata = [xml](Get-Content $webConfig)  
$FullSearchStr = $xmldata.configuration.'system.serviceModel'  
8

È possibile provare il metodo SelectSingleNode:

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

if(-not $client) 
{ 
    $client = $xmldata.CreateElement('Client') 
    ... 
} 
+0

La condizione ha esito positivo anche se il nodo 'client' è già presente – Samselvaprabu

+0

Se xpath viene passato come variabile come $ xpath = '// co nfiguration/system.serviceModel/client '\t \t $ client = $ xmldata.SelectSingleNode ($ xpath) non riesce, ma se passo direttamente xpath allora funziona correttamente. Logica peculiare !!! cosa mi manca MVP? – Samselvaprabu

2

È anche possibile utilizzare 'count' come un valore booleano

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 
} 
+0

Questo deve essere avvolto per ottenere il conteggio. 'if (@ ($ xmldata.SelectSingleNode ('// configuration/system.serviceModel/Client')). Count -gt 0)' – StingyJack

Problemi correlati