You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PDI的Modified JavaScript Value步骤中插入XML避免转义的方法

解决PDI中Modified JavaScript Value生成XML时标签转义问题

问题根源

你之前的操作是把每个商品的XML转成字符串后拼接,当把这个字符串插入到XML对象中时,PDI的JavaScript引擎会将字符串里的<和>自动转义成&lt;和&gt;——因为它把这部分当成了文本内容,而非合法的XML节点。

修正方案(全程用Modified JavaScript Value实现)

1. 第一步:生成商品XML节点而非字符串

在第一个Modified JavaScript Value步骤中,直接保留XML对象,不要转成字符串,同时保留订单字段用于后续分组:

// 创建商品XML节点,不转换为字符串
var itemNode = <rowItem>
  <ItemCode>{item}</ItemCode>
  <Quantity>{qty}</Quantity>
</rowItem>;

// 需在步骤的「字段」配置中新增两个输出字段:
// - item_xml:类型选择Object,映射变量itemNode
// - order_group:直接映射原order字段

2. 第二步:按订单分组聚合XML节点集合

使用Group By步骤,按order_group字段分组,对item_xml字段选择聚合类型为Concatenate objects,输出字段命名为items_node_list(该字段会存储同订单下所有商品的XML节点集合)。

3. 第三步:构建完整XML结构

在第二个Modified JavaScript Value步骤中,将聚合后的XML节点集合直接插入目标节点,而非字符串拼接:

// 初始化完整XML框架
var body = <BO>
  <Level1A_Header>
    <rowHeader>
      <Field1>{variable1}</Field1>
      <Field2>{variable2}</Field2>
      <!-- 补充其他头部字段 -->
    </rowHeader>
  </Level1A_Header>
  <Level1B_Items>
  </Level1B_Items>
</BO>;

// 获取商品容器节点,批量追加商品XML节点
var itemsContainer = body.Level1B_Items;
for each (var node in items_node_list) {
  itemsContainer.appendChild(node);
}

// 按需转换为字符串输出
var finalXml = body.toXMLString();

替代方案(纯字符串拼接避免转义)

如果偏好纯字符串操作,可全程拼接后再转XML对象(注意需自行处理特殊字符转义):

// 第一步:生成商品XML字符串
var lineXml = '<rowItem><ItemCode>' + item + '</ItemCode><Quantity>' + qty + '</Quantity></rowItem>';

// Group By步骤按order分组,用Concatenate字符串聚合,分隔符留空,得到xml_lines

// 第二步:拼接完整XML字符串后转对象
var fullXmlStr = '<BO><Level1A_Header><rowHeader><Field1>' + variable1 + '</Field1><Field2>' + variable2 + '</Field2></rowHeader></Level1A_Header><Level1B_Items>' + xml_lines + '</Level1B_Items></BO>';
var body = new XML(fullXmlStr);
// 或直接输出fullXmlStr作为最终结果

注意事项

  • XML对象操作方式会自动处理特殊字符(如&、<等),更安全可靠;纯字符串拼接需自行处理这些字符,否则会导致XML格式错误。
  • Group By聚合时需确保选择Object类型聚合,而非字符串聚合,否则仍会出现转义问题。

内容的提问来源于stack exchange,提问作者Isaac Gutierrez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:12:22