使用PowerShell 2.0的XML属性的总和值

时间:2010-06-08 05:11:03

标签: xml powershell-v2.0

我有一个包含XML文件的目录。我很快就想通过它们来总结upp存储在一个属性中的值。我已经想出了如何填充我感兴趣的节点。

例如:

(Select-Xml -Path .\*.xml -XPath "//*[@Attribue = 'valueImlookingfor']").Count

此命令为我提供当前目录中所有XML文件中元素的计数,其中“Attribue”中的值为“valueImlookingfor”。

我想总结“属性”的所有值,而不是计算它们。在PowerShell中执行此操作的最佳方法是什么?我是PowerShell的新手,所以这可能是微不足道的,但我不知道......

非常感谢所有提示: - )

1 个答案:

答案 0 :(得分:2)

$total = 0; select-xml -path .\*.xml -xpath "//*/@Attribute" | foreach { $total += [int] $_.node.value }; $total

故障:

  • $total = 0 - 我们将总结这个变量。
  • select-xml -path .\*.xml -xpath ... - 返回当前文件夹中任何* .xml文件中与给定XPath表达式匹配的所有XML节点的集合。
  • //*/@Attribute - 返回XML树中任何位置的所有属性节点。
  • | foreach { ... } - 将select-xml返回的集合传递('pipe')到foreach cmdlet。 foreach在集合中的每个元素上执行给定的代码段。可以通过$_
  • 访问集合元素
  • $total += [int] $_.node.value - 将$total添加到当前属性的值,从字符串转换为整数。
  • ; $total - 最后,返回$total的值。由于未在任何地方分配,因此将值写入控制台。