InnerXml
выдает содержимое узла XML в виде строки. Не используйте его, если вы хотите получить доступ к вложенным элементам. $_.node
это объект. Дочерние узлы этого объекта могут быть доступны следующим образом:
Select-Xml -Xml $XMLInput -XPath '//address' | ForEach-Object {
$street = $_.Node.street
$city = $_.Node.city
...
}
Использование dot-access автоматически расширяет значение узла.
Чтобы ограничить результаты определенным городом, добавьте фильтр в выражение XPath:
$city = 'Bangalore'
Select-Xml -Xml $XMLInput -XPath "//address[city='${city}']" | ForEach-Object {
$street = $_.Node.street
$city = $_.Node.city
...
}
В качестве альтернативы вы можете использовать метод SelectNodes()
вместо Select-Xml
:
$city = 'Bangalore'
$XMLInput.SelectNodes("//address[city='${city}']") | ForEach-Object {
$street = $_.street
$city = $_.city
...
}