给出以下XML:
<data>
<variable>
<row>
<column1>RPS</column>
<column2>10</column>
</row>
</variable>
<variable>
<row>
<column1>SANTH</column>
<column2>5000</column>
</row>
</variable>
</data>
我需要读取值5000并需要替换一些随机数。我没有任何线索。下面从net复制的代码。它没有按照我的要求工作。
$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。
答案 0 :(得分:0)
您的XML数据有多个<variable>
节点,因此$xml.data.variable
会生成一个节点列表。 PowerShell v2不透明地展开列表/数组以允许访问每个元素的成员。相反,您正在尝试访问row
个节点数组的(不存在的)属性<variable>
。
如果要修改第二个<column2>
节点的<variable>
子节点,这应该有效:
$xml.data.variable[1].row.column2 = "$variable"
如果要修改值为5000的子节点(无论其位置如何),最好使用XPath表达式:
$xml.SelectSingleNode("//column2[text()='5000']").'#text' = "$variable"