Power Automate按companyName分组计数及XPath报错问题求助
解决Power Automate中XPath统计分组次数报错及替代方案
一、XPath报错的常见原因及修复
XPath参数无效通常由以下问题导致,对应修复方式如下:
- XML结构不合法:XML必须有唯一根节点,若你之前生成的XML是无根的零散节点(如
<Company>CONTOSO</Company><Company>SPICEWORKS</Company>),会直接触发报错。
修正后的合法XML结构示例:<Companies> <Company>CONTOSO</Company> <Company>CONTOSO</Company> <Company>SPICEWORKS</Company> </Companies> - XPath表达式语法错误:Power Automate仅支持XPath 1.0,不要使用2.0语法。统计某公司出现次数的正确表达式示例:
注意:若count(//Company[text()='CONTOSO'])companyName包含&、<这类特殊字符,需在生成XML时先转义,否则XML本身不合法会导致XPath解析失败。 - 命名空间问题:如果XML带命名空间(如开头有
xmlns:ns="http://example.com"),XPath需指定命名空间前缀才能匹配节点,表达式要写成count(//ns:Company[text()='CONTOSO']),同时在Power Automate的XPath动作中添加命名空间映射。
二、更简单的原生动作替代方案(无需XPath)
用Power Automate自带动作可更高效完成分组统计,步骤如下:
收集所有companyName到数组
- 初始化数组变量
allCompanyNames - 在调用Graph API的For Each循环中,添加「追加到数组变量」动作,将当前用户的
companyName追加到allCompanyNames
- 初始化数组变量
获取唯一公司列表
- 添加「选择」动作,输入
allCompanyNames,映射字段选择Value(数组中每个字符串会转为{"Value": "CONTOSO"}格式的对象) - 添加「删除重复项」动作,输入「选择」的输出,基于
Value字段去重,得到uniqueCompanies数组
- 添加「选择」动作,输入
统计每个公司的出现次数
- 初始化数组变量
companyCounts用于存储结果 - 对
uniqueCompanies执行「应用到每一个」循环:- 添加「筛选数组」动作,输入
allCompanyNames,条件设为@equals(item(), items('应用到每一个')?['Value']) - 添加「长度」动作,输入筛选后的数组,得到当前公司的出现次数
- 添加「创建对象」动作,设置键值对:
CompanyName=items('应用到每一个')?['Value'],Count= 长度动作的输出 - 将创建的对象追加到
companyCounts数组
- 添加「筛选数组」动作,输入
- 初始化数组变量
生成目标格式(可选)
若需要CONTOSO=2这类字符串格式,可在循环中用「拼接字符串」动作生成,再追加到结果数组。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

