我必须更改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);
}
答案 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