Skip to main content

Check and Create a Node in XML, if it does not existing using PowerShell

Here is a quick code snippet to Add a Node in XML from from the XPath, the following PowerShell function will search for the node hierarchy, if it does not exist then it will create it.




function CheckForXMLNode {
    param (
        $File, # File Path of XML to search the node
        $NodePath
    )
    $nodes = $NodePath -split "/"
    $path = "//Configuration"
    # My Sample Node Path is like this
# //Configuration/Farm/CustomParent/CustomChild

    foreach ($node in $nodes) {
        if ( ($node -ne "") -and ($node -ne "Configuration") ) {
            [xml]$xml =  Get-Content $File
            $PathToCheck = $path+"/"+$node
            $NodeToCheck = $xml.SelectSingleNode($PathToCheck)

            if(!$NodeToCheck){
                Write-Host "$node Node does not existing. creating ...." -NoNewline
                $NewNode = $xml.CreateElement($node)
                $xml.SelectNodes($path).AppendChild($NewNode) | Out-Null
                Write-Host "OK" -BackgroundColor Green -ForegroundColor Black 
                $xml.Save($File)
            }
            $path += "/$node"
        }
    }
}

Comments

Popular posts from this blog

PowerShell: Get Actual Error

I was having hard time to find the reason why I was not able to find a custom method in a .Net DLL. Find your Assembly: PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts > [appdomain]::currentdomain . getassemblies() | Where - Object FullName - Match "MyAssembly" GAC Version Location --- ------- -------- False v4 . 0.30319 C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts\Tools\MyAssembly . dll PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts & gt; $ a = [appdomain]::currentdomain . getassemblies() | Where - Object FullName - Match "MyAssembly" PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts & gt; $ a GAC Version Location --- ------- -------- False v4 . 0.30319 C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts\Tools\MyAssembly . dll When I was trying to get the Types in the assembly, I was getting the exception: PS C:\vstsagent\A1\_work\r1\a\_DevOps_CI\Scripts > ...

Notepad++ Error for 64bit - ShellExecute failed (2): Is this command correct?

Cause : It happens when you set Notepad++ to "run as" administrator on Windows 7. Fix:  To fix this, you need to manually edit the registry of your system to create a new option in pop-up menu to open files with Notepad++ Step 1 : Delete existing  Edit with Notepad++  entry from registry Go into your registry as an administrator (Run -> regedit) and search for notepad++.exe. Find the key under  HKEY_CLASSES_ROOT  that has an entry with the  Edit with Notepad++  (or maybe  Edit with &Notepad++ ) and delete the entire key. Right click and you should see that you no longer have that option. Step 2 : Create new entry Open with Notepad++ Go to: HKEY_CLASSES_ROOT\*\shell Create a new key under shell called  OpenWithNotepad  and create a subkey under that called  command . In the  OpenWithNotepad  key the default string is what you want the context menu item to be called. I set it to  Open with Not...

fastboot device not deleted in Windows 10? Here is the fix

I was cleaning my closet and found my HTC Incredible S (which I had bought in 2011). I gave the phone some juice for few hours and booted it, surprisingly it was working :) I thought about rooting it and flashing with new rom in market. I searched xda fourm and found this  (Cynogen 13 based Rom for Incredible S). I started to flash it. but, my bootloader was still locked. I went to HTCDev to unlock the bootloader. but Fastboot was not able to detect my phone. After 3 hrs of internet searching I found this simple fix. I think this can work with all the android phones. you need to create a registry entry (below) and reboot the system(PC). [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\usbflags\0BB40FF00100] "SkipBOSDescriptorQuery"=hex:01,00,00,00 after the registry fix, it worked liked a charm. Thanks