uipath和blue prism上传xml文件需检查路径权限、utf-8编码、content-type匹配及响应解析;citrix/锁屏环境须改用http request;必须校验xml结构与bom头,避免静默失败。

UiPath 中用 Upload File 活动上传 XML 文件前必须检查路径权限和编码
UiPath 的 Upload File 活动本身不处理文件内容,只模拟浏览器点击+选择本地文件。这意味着:XML 文件路径必须是机器人运行账户可读的绝对路径,且不能含中文或空格(尤其在非交互式会话中容易失败)。
- 推荐把 XML 文件统一放在
C:\RPA\Uploads\这类无空格、全英文路径下 - 若 XML 由前序流程生成,确保
Write XML活动设置了Encoding为UTF-8(默认可能为 UTF-16,部分 Web 系统拒收) - 在 Citrix 或锁屏环境下,
Upload File会失效——此时必须改用HTTP Request+Multipart/form-data手动构造请求
Blue Prism 中 File Upload 对象无法直接传 XML 内容,需配合 Utility - Files 预校验
Blue Prism 的原生 File Upload 控制对象只支持“选中文件→触发上传”,不暴露文件句柄或字节流。如果目标系统对 XML 格式有强校验(如要求根节点为 <order></order>),仅靠 UI 操作无法捕获格式错误。
- 务必在上传前插入
Utility - Files→Read Text File,再用Utility - Strings→Contains检查是否含<?xml和闭合根标签 - 避免使用
Wait For Element盲等上传完成:某些系统上传后返回 JSON 响应体中的"status": "success",应改用HTTP Request模块轮询接口状态 - Blue Prism 7+ 支持
Code Stage调用 C# 的XmlDocument.Load(),可用于预解析验证,但需在资源机器上安装 .NET Framework 4.7.2+
跨平台共性陷阱:Content-Type 不匹配导致 XML 被当纯文本解析
无论 UiPath 还是 Blue Prism,走浏览器自动化上传时,实际发出的 HTTP 请求中 Content-Type 由浏览器根据扩展名决定。但很多内部系统后端硬编码只认 text/xml 或 application/xml,而浏览器常发 application/octet-stream。
- UiPath 可用
HTTP Request活动替代 UI 上传:设置Method = POST,Body 选Binary,手动读取 XML 字节数组,Header 加Content-Type: application/xml - Blue Prism 需在
HTTP Request中启用Advanced Options→ 勾选Use Custom Headers,否则 Header 会被忽略 - 测试时用浏览器开发者工具的 Network 标签页对比“人工上传”和“RPA 上传”的请求头差异,重点关注
Content-Type和Content-Disposition字段
POST /api/upload HTTP/1.1 Host: example.com Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Length: 529 <p>------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file"; filename="order.xml" Content-Type: application/xml</p><p><?xml version="1.0" encoding="UTF-8"?> <Order id="123"><Item>A</Item></Order> ------WebKitFormBoundary7MA4YWxkTrZu0gW--
上传成功≠业务成功:必须解析响应体里的 XML 错误码
很多 RPA 流程卡在“上传按钮已点、进度条走完”,却没发现后端返回了 <error code="400">Invalid XML structure</error>。UI 层面看不到这个响应,因为它是 HTTP body,不是页面 DOM。
- UiPath 推荐用
HTTP Request+Deserialize XML解析响应,再用If判断是否存在/error节点 - Blue Prism 在
HTTP Request后接XML Utilities→Get Node Value,XPath 填//error/@code,结果为空则视为成功 - 别依赖“上传完成弹窗”做判断——这类弹窗常由前端 JS 异步渲染,RPA 等到弹窗出现时,后端可能早已返回错误响应
实际部署时最容易被忽略的是:XML 文件时间戳和服务器时区不一致导致签名失效,或者 BOM 头(\uFEFF)引发解析失败。这两者不会报“上传失败”,但会让整个业务链路静默中断。










