OutSystems需用FileUpload+BinaryData.ToText(“UTF-8”)+XmlParse组合实现XML上传;须显式指定编码、校验根节点与字段非空、限制文件大小并异步处理大文件。
OutSystems 中没有内置的「XML 文件上传」专用组件,但可以通过标准文件上传 + 后端解析组合实现。关键不是找 XML 上传控件,而是控制 FileUpload 输出、用 XmlParse 处理内容,并注意编码与结构校验。
用 FileUpload 获取原始 XML 内容(非二进制流)
OutSystems 的 FileUpload 默认返回 BinaryData 类型,但 XML 解析需要字符串。必须在上传后调用 BinaryData.ToText() 转换,且显式指定编码(通常为 UTF-8),否则含中文或特殊字符的 XML 会解析失败。
常见错误现象:XmlParse 报错 "Invalid character at position X" 或解析出空节点——大概率是编码不匹配。
- 确保前端
FileUpload的OnFileUploaded动作中,立即调用BinaryData.ToText(UploadWidget.Record.File.Content, "UTF-8") - 避免先存入数据库再读取:
BinaryData存库后可能丢失原始编码元信息 - 若用户上传的是 .xml 文件但内容实际为 UTF-16 或带 BOM,
ToText()需配合Text.RemoveBom()清理
用 XmlParse 安全解析并校验结构
XmlParse 是 OutSystems 内置动作,但它不校验 DTD 或 XSD,仅做基础语法解析。如果业务要求强结构约束(如必须含 根节点、字段非空),需手动检查 XmlParse 返回的 XmlNode 层级和属性。
使用场景:接收第三方系统推送的订单 XML,需提取 和 并写入本地实体。