更新 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"
给出以下 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"