基于XML属性分组、求和与排序的PowerShell脚本编写求助
PowerShell脚本实现XML数据分组求和与排序需求
没问题,这就给你写个针对性的PowerShell脚本,完美实现你要的功能:筛选oc="AU"的节点、按dc分组求和tp、最后按求和结果降序排序。
完整脚本示例
# 加载XML数据(这里假设你的XML存储在文件中,替换成你的文件路径) $xml = [xml](Get-Content -Path "your_xml_file.xml") # 处理逻辑:筛选oc=AU的节点 -> 按dc分组 -> 求和tp -> 降序排序 $result = $xml.SelectNodes("//*[@oc='AU']") | Group-Object -Property @{ Expression = { $_.dc } } | ForEach-Object { [PSCustomObject]@{ dc = $_.Name total_tp = ($_.Group | Measure-Object -Property tp -Sum).Sum oc = "AU" # 保留oc属性标识 } } | Sort-Object -Property total_tp -Descending # 输出结果(可以根据需要改成导出到CSV等格式) $result
关键部分解释
- 加载XML:用
[xml]类型转换器把文件内容转换成XML对象,方便后续节点操作;如果你的XML是直接存在变量里的,直接替换这部分即可。 - 筛选节点:用XPath表达式
//*[@oc='AU']精准定位所有oc属性为"AU"的节点。 - 分组求和:
Group-Object按dc属性分组,这里用脚本块指定分组依据是节点的dc属性值;- 对每个分组,用
Measure-Object计算tp属性的总和,包装成自定义对象输出。
- 排序:
Sort-Object按total_tp字段降序排列,满足你要的排序需求。
扩展用法
如果需要把结果导出到CSV文件,只需要在最后加一行:
$result | Export-Csv -Path "AU_tp_summary.csv" -NoTypeInformation
内容的提问来源于stack exchange,提问作者Vivek Chauhan
相关产品推荐
相关产品推荐

