Reputation: 3
How would I use powershell to find the paths in this XML? For example, I need to find the Path for the Application/Name = PSTest AND Environment/Name = DEMO
Here is the sample XML:
<Applications>
<Application>
<Name>PSTest</Name>
<Environment>
<Name>DEMO</Name>
<BuildPath>C:\TEST\TEST</BuildPath>
<Path>C:\TEST\DEMO\PSTest|C:\TEST\DEMO1\PSTest</Path>
<BackupPath>C:\TEST\Backup</BackupPath>
</Environment>
<Environment>
<Name>PROD</Name>
<BuildPath>C:\TEST\DEMO</BuildPath>
<Path>C:\TEST\PROD\PSTest|C:\TEST\PROD1\PSTest</Path>
<BackupPath>C:\TEST\Backup\PROD</BackupPath>
</Environment>
</Application>
<Application>
<Name>PSTestTwo</Name>
<Environment>
<Name>DEMO</Name>
<BuildPath>C:\TEST\TEST</BuildPath>
<Path>C:\TEST\DEMO\PSTestTwo|C:\TEST\DEMO1\PSTestTwo</Path>
<BackupPath>C:\TEST\Backup</BackupPath>
</Environment>
<Environment>
<Name>PROD</Name>
<BuildPath>C:\TEST\DEMO</BuildPath>
<Path>C:\TEST\PROD\PSTestTwo|C:\TEST\PROD1\PSTestTwo</Path>
<BackupPath>C:\TEST\Backup\PROD</BackupPath>
</Environment>
</Application>
</Applications>
Upvotes: 0
Views: 38
Reputation: 3275
You can use XPath strings to find and select nodes:
$oXml = [Xml](Get-Content "infile.xml" | Out-String)
$sXPath = '//Application[Name = "PSTest"]/Environment[Name = "DEMO"]'
$sPath = ($oXml.SelectSingleNode($sXPath)).Path
$sPath
Keep in mind that, unlike PowerShell itself, XPath is case-sensitive.
Upvotes: 1