Powershell - XML 根据子节点值重命名节点名称

问题描述 投票:0回答:1

我需要根据子节点的值重命名父节点的名称。

到目前为止,这就是我所拥有的:

$path = 'C:\temp\test.xml'
$xml = [xml](Get-Content -Path $path)

$paramnode = $xml.SelectNodes('//outbound')

foreach($node in $paramnode){
    if($node.InnerText -eq '0'){
        $node.ParentNode.Name = 'outbound'
    }else{
        $node.ParentNode.Name = 'inbound'
    }

不幸的是,Name 属性看起来是只读的。有什么想法吗?

xml powershell readonly-attribute
1个回答
0
投票

您需要提供 XML 示例,但是使用一个简单的示例,基本上您可以做的是将选定的节点替换为具有所需名称的新节点:

$xml = [xml] '<foo><bar>hello</bar></foo>'
$node = $xml.SelectSingleNode('//bar')
$newchild = $xml.CreateElement('baz')
$newchild.InnerText = 'hello'
$null = $node.ParentNode.ReplaceChild($newchild, $node)
$xml.InnerXml # => <foo><baz>hello</baz></foo>
© www.soinside.com 2019 - 2024. All rights reserved.