如何在PowerShell中获取单个XML元素

时间:2017-04-25 14:37:18

标签: xml powershell

我有一个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中按名称获取元素的简单方法?

1 个答案:

答案 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"