RPA机器人(UiPath/Blue Prism)如何自动化XML文件上传流程

3次阅读

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

RPA机器人(UiPath/Blue Prism)如何自动化XML文件上传流程

UiPath 中用 Upload File 活动上传 XML 文件前必须检查路径权限和编码

UiPath 的 Upload File 活动本身不处理文件内容,只模拟浏览器点击+选择本地文件。这意味着:XML 文件路径必须是机器人运行账户可读的绝对路径,且不能含中文或空格(尤其在非交互式会话中容易失败)。

  • 推荐把 XML 文件统一放在 C:rpaUploads 这类无空格、全英文路径下
  • 若 XML 由前序流程生成,确保 Write XML 活动设置了 EncodingUTF-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 - FilesRead Text File,再用 Utility - StringsContains 检查是否含 <?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/xmlapplication/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-TypeContent-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 UtilitiesGet Node Value,XPath 填 //error/@code,结果为空则视为成功
  • 别依赖“上传完成弹窗”做判断——这类弹窗常由前端 JS 异步渲染,RPA 等到弹窗出现时,后端可能早已返回错误响应

实际部署时最容易被忽略的是:XML 文件时间戳和服务器时区不一致导致签名失效,或者 BOM 头(uFEFF)引发解析失败。这两者不会报“上传失败”,但会让整个业务链路静默中断。

text=ZqhQzanResources