xmlpowershell

Find xml node's full xpath


Suppose the following PowerShell line of code

$node = Select-Xml -Path $filePath -XPath "//*[@$someAttribute]"

How can I get the node's xpath? I figured I could just traverse up using its ParentNode property, but is there a better way to do it?


Solution

  • I don't think there's anything built into PowerShell to do what you want. Recursing upwards isn't too difficult, though. A function like this should work:

    function Get-XPath($n) {
      if ( $n.GetType().Name -ne 'XmlDocument' ) {
        "{0}/{1}" -f (Get-XPath $n.ParentNode), $n.Name
      }
    }