当reponse字段包含一个子节点时,node-soap force数组

时间:2016-03-22 01:50:40

标签: javascript xml soap node-soap

使用node-soap在响应中转换XML字段时,我想强制一个字段为数组,即使它包含一个子节点。

当只有一个孩子时,一个字段被解释为一个对象。请参阅以下示例:

// Below gives {ArrayOfItems: {Item: { name: 'foo', ... }}
// But I'd like it to be {ArrayOfItems: {Item: [{name: 'foo', ... }]}
<ArrayOfItems>
  <Item>
    ...
  </Item>
</ArrayOfItems>

// Below gives  {ArrayOfItems: {Item: [{ name: 'foo', ... }, { name: 'bar', ... }]}
<ArrayOfItems>
  <Item>
    ...
  </Item>
  <Item>
    ...
  </Item>
</ArrayOfItems>

如何在从xml转换为对象时强制将字段解析为数组?

1 个答案:

答案 0 :(得分:1)

LoopBack Enterprise SOAP连接器和node-soap都存在同样的问题。

我发现最简单的解决方法是使用一种简单的方法来执行以下操作:

function forceArray(array) {
      if (!array || Array.isArray(array))
        return array;
      else
        return [array];
}

这有帮助吗?