我需要根据子节点的值重命名父节点的名称。
到目前为止,这就是我所拥有的:
$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 示例,但是使用一个简单的示例,基本上您可以做的是将选定的节点替换为具有所需名称的新节点:
$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>