必须选用Power Automate中“当收到新邮件时(V3)”触发器并勾选Include attachments,解析XML前需按声明编码(如GBK)正确解码,Parse XML操作须提供schema,大文件需预判大小并分流处理。
用错触发器是第一步就卡住的最常见原因。如果你选了「当收到新邮件时」旧版(V2),它默认不加载附件内容,attachments 字段为空或只返回元数据。必须选 V3 版本触发器——它在触发时就支持原生获取附件二进制流。
实操建议:
Include attachments(不是默认开启)很多 XML 文件头部声明了编码(如 ),但 Power Automate 的 Parse XML 操作不读取该声明,它依赖你传入的字符串是否已按正确编码解码。若用 UTF-8 解一个 GBK 编码的 XML,会报错 Invalid character in the given encoding 或解析出乱码节点。
实操建议:
Get attachment content 获取 body(base64 字符串)Base64 to Binary 转成二进制,再用 Binary to String 转字符串 —— 这一步必须指定正确编码(可先用条件判断文件名后缀或 HTTP Content-Type,或固定 fallback 到 UTF-8 / GBK)contains(triggerBody()?['subject'], 'GBK'),或检查 triggerBody()?['attachments'][0]['name'] 是否含中文字符再切编码Parse XML 不是智能识别结构,它需要你提供 XSD schema 或至少一个示例 XML 来生成 schema。如果跳过这步直接连到后续操作,会提示 The provided schema is invalid,且错误信息不明确。
实操建议:
Parse XML 操作,点击 Generate from sample,粘贴 XML 示例(确保格式完整、无 BOM、缩进不影响) 和 并存),schema 需覆盖所有可能字段,否则缺失字段在 body 中不会被解析出来{
"root": {
"items": {
"item": [
{
"@id": "1",
"#text": "value1"
},
{
"@type": "A
",
"#text": "value2"
}
]
}
}
}
Power Automate 对单次操作的输入/输出大小有限制:免费版上限 5 MB,付费版(Per Flow)约 50 MB。但实际瓶颈常在 Parse XML —— 它内部会将整个 XML 加载为内存对象,超过 2–3 MB 就容易超时(默认操作超时 2 分钟)或触发 BadGateway。
实操建议:
Length 函数提前判断 length(body('Get_attachment_content'))(base64 长度 ≈ 原始大小 × 1.33),超 2 MB 就走备用路径(如调用 Azure Function 或 Logic App 处理)Parse XML 后接「Apply to each」遍历上千个节点;改用 Filter array 先筛出关键子集 )时,Parse XML 可能失败,需前置用 Replace 清洗(如替换 为 )