PowerShell-XML-处理具有和不具有属性的节点

时间:2020-06-30 09:29:01

标签: xml powershell

我必须更改XML节点的内部文本。但是XML节点可以处于各种状态,例如:

<MachineID>1234</MachineID>

<MachineID issuer="companyA">1234</MachineID>

<MachineID issuer="">1234</MachineID>

它们可以为空

<MachineID />

我正在尝试找到一种比以下方法更好的方法:

$count = 0;
try{
    $XMLNode = $Value;
}
catch{
    $count++;
}
try{
    $XMLNode.InnerText = $Value;
}
catch{
  $count++;
}
try{
    $XMLNode.'#text' = $Value;
}
catch{
    $count++;
}
if($count -gt 2){
    echo ("Failed to set " + $XMLNode.Name + " to " + $Value);
}

1 个答案:

答案 0 :(得分:0)

似乎节点选择是这里的主要问题。以下在您的测试案例中对我有用。

# Assuming your xml content is in the file file.xml
$x = [xml](Get-Content file.xml)
$Value = 27000
$x.SelectSingleNode('//MachineID').InnerText = $Value