【问题标题】:PowerShell - XML - Handling Nodes with and without attributesPowerShell - XML - 处理具有和不具有属性的节点
【发布时间】:2020-06-30 20:59:41
【问题描述】:

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

【问题讨论】:

    标签: xml powershell


    【解决方案1】:

    似乎节点选择是这里的主要问题。以下内容适用于您的测试用例。

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

    【讨论】:

      猜你喜欢
      • 2011-10-05
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多