Как мне перечислить все имя атрибута в XML с помощью powershell - PullRequest
0 голосов
/ 04 октября 2019

Используя powershell, как мне получить список attributeNames.

  <productSettings>
    <productGroups>
      <productGroup attributeName1="1" 
                    attributeName2="1" 
                    attributeName3="xyz" 
                    attributeName4="0"/>
    </productGroups>
  </productSettings>

Когда я пытаюсь использовать свойство Atrributes, я получаю значения атрибута, а не имя атрибута

[xml]$config = Get-Content 'C:\\ProductGroup.config'

$configNodes = $config.productSettings.productGroups.ChildNodes

foreach($configNode in $configNodes)
{
    $configNode.Attributes
}

1 Ответ

1 голос
/ 04 октября 2019

Традиционный подход: итерируйте атрибуты и выводите их имена:

foreach ($configNode in $configNodes) {
    foreach ($attr in $configNode.Attributes) {
        $attr.Name
    }
}

Подход PowerShell: в PowerShell 3.0+ вы можете использовать точечную запись в коллекциях для доступа к вложенным свойствам:

foreach ($configNode in $configNodes) {
    $configNode.Attributes.Name
}

На самом деле вы можете пойти так далеко, как

$config.productSettings.productGroups.productGroup.Attributes.Name

, что приведет к всем именам атрибутов для всех <productGroup> элементов, т.е. эквивалент XPath

/productSettings/productGroups/productGroup/@*/name()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...