更新 XML 元素

Update XML element

给出以下 XML:

<data>  
   <variable>
    <row>
      <column1>RPS</column>
      <column2>10</column>
    </row>  
  </variable>

  <variable>
    <row>
      <column1>SANTH</column>
      <column2>5000</column>
    </row>  
  </variable> 
</data>

我需要读取值 5000 并用一些随机数替换。我是我没有任何线索。下面的代码是从网上复制过来的。它不符合我的要求。

$variable = Get-Random

[xml]$xml = Get-Content D:\test.xml
$xml.data.variable.row.ChildNodes.Item(1)."#text" = "$variable" // failing  here 
$xml.Save('D:\test.xml')

此外,请告诉我如何通过提供元素名称而不是索引值来访问 column2。

您的 XML 数据有多个 <variable> 节点,因此 $xml.data.variable 生成了一个节点列表。 PowerShell v2 不会透明地展开 lists/arrays 以允许访问每个元素的成员。相反,您正在尝试访问 <variable> 节点数组的(不存在的)属性 row

如果你想修改第二个 <variable> 节点的 <column2> 子节点,这应该有效:

$xml.data.variable[1].row.column2 = "$variable"

如果要修改值为 5000 的子节点(无论其位置如何),最好使用 XPath 表达式:

$xml.SelectSingleNode("//column2[text()='5000']").'#text' = "$variable"