Power Automate怎么解析XML内容 XPath函数

Power Automate 中无法直接使用 XPath 函数解析 XML,推荐先用「XML」操作将 XML 转为 JSON 再解析;也可在 Compose 等支持表达式的动作中用 xpath(xml(), 'path') 提取,或结合 Parse JSON 进行强类型解析。

Power Automate 中不能直接使用 XPath 函数(如 xpath())解析 XML,因为原生的 XPath 支持在标准操作中已被移除或仅限特定连接器(如 SharePoint、SQL Server)。但你可以通过几种可靠方式实现 XML 解析,核心思路是:先将 XML 转为 JSON 或用表达式提取节点,再用 Power Automate 内置函数处理。

XML 操作转换为 JSON 后解析

这是最推荐、兼容性最好的方法。Power Automate 提供了「XML」操作(位于「数据操作」类别),可将 XML 字符串自动转为结构化 JSON,之后就能用 body()outputs()variables() 配合点号语法(如 item?.name)安全取值。

  • 确保输入是格式良好的 XML 字符串(含根节点,标签闭合,无非法字符)
  • 添加「XML」操作 → 输入 XML 内容(可来自变量、触发器输出或 compose)
  • 后续步骤中,用动态内容选择转换后的节点,或用表达式如:
    outputs('XML')?['root']?['items']?['item'][0]?['title']
  • 注意:数组需用索引或 apply to each;空值用 ? 安全导航避免报错

Compose + 表达式模拟简单 XPath 提取

对轻量级需求(如取某个固定路径的文本值),可用 xml() + xpath() 组合表达式——但仅在「Compose」或条件判断等支持表达式的动作中有效,且要求环境支持(部分云版流程已启用,政府云/本地网关可能受限)。

  • 表达式示例(提取 Power BI 中的 title 文本):
    xpath(xml(triggerBody()), 'string(/book/title)')
  • 必须先用 xml() 将字符串转为 XML 对象,否则 xpath() 会失败
  • 支持常见 XPath 语法://author/catalog/book[1]/pricecount(//book)
  • 返回结果是字符串,数值需用 int()float() 转换

Parse JSON 配合手动 Schema 精确解析

当 XML 结构稳定、字段明确时,先用「XML」操作转 JSON,再用「Parse JSON」动作定义 schema,能获得更强的类型提示和动态内容自动识别。

  • 运行一次 XML 转换动作,复制输出 JSON 示例
  • 在「Parse JSON」中粘贴该 JSON,点击「生成架构」自动生成 schema
  • 后续所有字段都可通过直观动态内容选取,无需写表达式
  • 适合多层嵌套、含属性(@attr)或混合文本+子节点的复杂 XML

注意事项与避坑提醒

实际使用中容易忽略这些细节,导致解析失败或取值为空:

  • XML 命名空间(xmlns)会让 xpath 失效,建议预处理:用 replace() 清除命名空间声明,或用 local-name() 匹配(如 xpath(xml(...), '//*[local-name()="title"]')
  • XML 中的属性需用 @name 语法,例如 /book/@id;文本内容用 text() 或省略(如 /book/title 默认取文本)
  • 触发器返回的 XML 若是 base64 编码(如 Outlook 附件),需先用 base64ToString() 解码
  • 大 XML(>5MB)可能超出行动限制,建议用 Azure Functions 或 Logic Apps 替代