我有一个xml文件" 1.xml":
<configuration >
<application>
<name>My Application</name>
</application>
<log level="info" />
</configuration>
并希望更改名称节点中的文字&#34;我的应用程序&#34;来自Powershell&#34;的名字。我可以这样做:
$xml = [xml](Get-Content "1.xml");
$nameNode = $xml.configuration.application.ChildNodes.Item(0);
$nameNode.InnerText = "Name from Powershell";
但我不喜欢按索引获取节点的想法。我想通过名字得到它。但这种变体对我不起作用:
$nameNode = $xml.configuration.application.name;
$nameNode = $xml.SelectSingleNode("//configuration/application/name");
是否有一种在PowerShell中按名称获取元素的简单方法?
答案 0 :(得分:3)
以下为我效劳。正如@Jeroen所说,你必须更具体,并提供一个可运行的脚本,显示什么不起作用。
$xml = [xml]@"
<configuration >
<application>
<name>My Application</name>
</application>
<log level="info" />
</configuration>
"@
$xml.configuration.application.name # Outputs "My Application"
$xml.configuration.application.name = "Test"
$xml.configuration.application.name # Outputs "Test"