2

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

例如:

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

此命令为我提供了当前目录中所有 XML 文件中的元素计数,这些文件在“属性”中具有值“valueImlookingfor”。

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

非常感谢所有提示:-)

4

1 回答 1

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 { ... }-- 将 ('pipe') 返回的集合select-xml传递给foreachcmdlet。 foreach在集合中的每个元素上执行给定的代码段。通过 访问集合元素$_
  • $total += [int] $_.node.value-- 添加到$total当前属性的值,从字符串转换为整数。
  • ; $total-- 最后,返回$total. 由于未在任何地方分配此值,因此该值将写入控制台。
于 2010-06-08T06:01:27.653 回答