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

使用node包xml-js将SOAP响应text内容转结构化对象方案咨询

实现方案

整体处理流程

  • 第一步从xml-js转换后的SOAP响应JSON中,按固定路径elements[0].elements[0].elements[0].elements[0].elements[0].text提取原始文本内容,两类接口的原始文本都带有固定前缀00_,先统一去除该前缀
  • 第二步根据接口类型调用对应的解析逻辑:FetchCust接口用键值对拆分逻辑,FetchUsage接口用XML二次解析逻辑

第一类FetchCust接口文本解析

去除前缀后的文本是键: 值, 键: 值的格式,部分值带有Cell:前缀,解析时直接剔除即可,代码示例:

function parseFetchCustText(rawText) {
  // 去除固定前缀
  const content = rawText.replace(/^00_/, '');
  const result = {};
  // 拆分所有键值对
  content.split(', ').forEach(item => {
    const [key, ...valParts] = item.split(': ');
    let value = valParts.join(': ');
    // 剔除值的Cell前缀
    if (value.startsWith('Cell:')) {
      value = value.slice(5);
    }
    result[key] = value.trim();
  })
  return result;
}

第二类FetchUsage接口文本解析

去除前缀后的文本是标准XML格式,直接复用已安装的xml-js做二次转换,提取Table节点转为数组即可,代码示例:

const convert = require('xml-js');

function parseFetchUsageText(rawText) {
  // 去除固定前缀
  const xmlContent = rawText.replace(/^00_/, '');
  // XML转JSON,compact模式更方便取值
  const xmlJson = JSON.parse(convert.xml2json(xmlContent, {compact: true, spaces: 0}));
  // 兼容单条/多条Table数据,统一转为数组格式
  const tableList = Array.isArray(xmlJson.NewDataSet.Table) ? xmlJson.NewDataSet.Table : [xmlJson.NewDataSet.Table];
  // 提取每个节点的文本值,去掉冗余嵌套
  return tableList.map(table => {
    const item = {};
    Object.keys(table).forEach(field => {
      item[field] = table[field]._text;
    })
    return item;
  })
}

完整调用示例

function processSoapResponse(soapJson, apiType) {
  // 提取原始text内容
  const rawText = soapJson.elements?.[0]?.elements?.[0]?.elements?.[0]?.elements?.[0]?.elements?.[0]?.text;
  if (!rawText) throw new Error('响应内容为空');
  
  if (apiType === 'FetchCust') {
    return parseFetchCustText(rawText);
  } else if (apiType === 'FetchUsage') {
    return parseFetchUsageText(rawText);
  }
  throw new Error('不支持的接口类型');
}

注意事项

  • 解析前可先校验返回内容是否符合格式要求,避免空值、格式异常导致的报错
  • 若接口返回的XML节点名存在拼写错误(如示例中的AccounType少了字母t),可在解析后自行做字段名映射修正
  • 若FetchCust接口的value中还有其他固定前缀需要剔除,可在对应解析函数中扩展处理逻辑

内容的提问来源于stack exchange,提问作者Adeola Oni

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 07:54:02