Использование циклов к узлам AppendChild в XML с powershell - PullRequest
0 голосов
/ 26 марта 2020

У меня есть xml, который выглядит следующим образом ...

<process>

<stage><stage />
<stage><stage />
<stage><stage />

<process />

Я пытаюсь добавить дочерний узел к каждому из этих узлов и добавить новый узел, вызываемый, чтобы получить что-то вроде этого .. ..

<process>

<stage>
<display><display /> 
<stage />
<stage>
<display><display /> 
<stage />
<stage>
<display><display /> 
<stage />

<process />

Я написал это в Powershell

[XML]$Document = Get-Content "File Path"

$varChild = $Document.CreateElement("display" , $Document.NamspaceURI)
$counter = 0

do {

$Document.process.stage[$counter].AppendChild($var)
$counter += 1

} while ($counter -lt $Document.process.stage.count)

Мое устранение неполадок показало, что происходит то, что узел добавляется к узлу первого этапа, но затем он удаляется и добавлено к узлу второго этапа ...... Я понятия не имею, почему или как добавить его ко всем узлам этапа.

1 Ответ

1 голос
/ 26 марта 2020

Вы можете сделать следующее с вашим примером XML:

[XML]$Document = Get-Content "File Path"
$Document.process.SelectNodes("//stage") | ForEach-Object {
    $node = $Document.CreateNode("element","display",$Document.NamspaceURI)
    $_.AppendChild($node)
}

Объяснение:

Вы преобразуете содержимое XML в XMLDocument , Используйте метод SelectNodes() с XPath для выбора ваших stage узлов. Создайте новый узел для каждой итерации и добавьте его к текущему stage узлу ($_).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...