Как вы закомментируете узел XML, используя Powershell 3.0? - PullRequest
1 голос
/ 23 марта 2020

Я хотел бы закомментировать узел XML в файле конфигурации, используя Powershell 3.0.

Например, если это мой config.xml файл:

<node>
    <foo type="bar" />
</node>

I хотел бы, чтобы мой сценарий изменил файл следующим образом:

<node>
    <!-- <foo type="bar" /> -->
</node>

Я хочу сделать это, используя встроенную функциональность Powershell 3.0 XML / XPATH, а не замену строк на основе соответствия / регулярных выражений.

1 Ответ

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

Используйте CreateComment() для создания нового узла комментария, содержащего существующий узел XML, затем удалите существующий:

$xml = [xml]@'
<node>
    <foo type="bar" />
</node>
'@

# Find all <foo> nodes with type="bar"
foreach($node in $xml.SelectNodes('//foo[@type="bar"]')){
  # Create new comment node
  $newComment = $xml.CreateComment($node.OuterXml)

  # Add as sibling to existing node
  $node.ParentNode.InsertBefore($newComment, $node) |Out-Null

  # Remove existing node
  $node.ParentNode.RemoveChild($node) |Out-Null
}

# Export/save $xml
...