Boomi XML解析需手动设置重复节点、混合内容和命名空间:右键item设为Repeating Element;para节点启用Mixed Content并用textContent访问文本;带ns的XML需配置Namespace Context且路径显式带前缀。

XML Profile 中嵌套重复节点无法映射到扁平结构
Boomi 的 XML Profile 解析器默认将 识别为单个 items 容器,而非可迭代的 item 集合——这是多数映射失败的根源。
- 必须在 Profile 编辑界面右键点击
item节点 → 选择 “Set as Repeating Element”,否则下游Map步骤中该节点不可拖入循环映射区 - 若原始 XML 没有显式命名父容器(如直接以多个
开头),需先用Parse XML步骤配合自定义 Root Name(例如填root)生成合法 Profile,否则 Boomi 拒绝加载 - 重复节点启用后,
Map中对应字段会带[n]后缀;但实际运行时索引由 Boomi 动态分配,**不可硬编码item[0]或item[1]**,应使用循环连接(Loop Shape)或Get Dynamic Value函数提取
处理混合内容(Mixed Content)XML 时文本与子元素错乱
当节点同时含文本和子元素(如 ),Boomi 默认把整个 para 当作纯文本,bold 被吞掉或转义为字符串。
- 进入 Profile 编辑 → 右键
para节点 → “Set as Mixed Content”,此时节点类型变为MixedContent,子节点bold才会独立存在 - 映射时,
para自身的文本值需通过textContent属性访问(即拖para.textContent),而bold内容走常规路径para.bold - 注意:启用 Mixed Content 后,该节点**不能作为重复节点**,也不能参与 XPath 过滤(如
//para[text()="Hello"]会失效)
大型 XML(>10MB)解析超时或内存溢出
Boomi Cloud 默认限制单次 XML 解析内存为 256MB,且 Parse XML 步骤超时阈值为 300 秒——复杂嵌套 + CDATA + DTD 声明极易触发。
- 前置用
Transform步骤执行 Groovy 清理:移除注释(xml.replaceAll('', ''))、压缩空格、剥离 DTD(xml.replaceAll('^>]*>', '')) - 避免在
Parse XML后立刻接Map;改用Split步骤按重复根节点切片(如每 50 个order一组),再并行处理 - 本地 Atom 环境可调高 JVM 参数:
-Xmx2g -XX:+UseG1GC,但 Cloud 环境无法修改,只能靠结构拆分
if (xml.contains("", "$1");
}
xml = xml.replaceAll("\\s+", " ").trim();
Namespace 处理导致节点匹配失败
带命名空间的 XML(如 )中,即使 Profile 正确识别了 ns:order,Map 里拖拽仍可能显示 “No matching element”,因为 Boomi 默认忽略 namespace 前缀。
- Profile 编辑时,右键根节点 → “Set Namespace Context”,填入完整 URI(如
http://example.com),并勾选 “Use Namespace in Mapping” - 在
Map步骤中,所有带 ns 的字段路径必须显式包含前缀(如ns:order/ns:item/ns:price),不能省略ns: - 若上游系统动态变更 namespace URI,建议用
Transform+ Groovy 先统一替换:xml.replaceAll('xmlns:[^=]+="[^"]*"', 'xmlns:ns="http://fixed.uri"')









