【问题标题】:Passing an array of ints with node-soap使用 node-soap 传递一个整数数组
【发布时间】:2016-01-27 10:09:41
【问题描述】:

我将node-soap 与服务一起使用,一切正常,但我需要发送一个整数数组,我发现我只能发送第一个,因为我找不到构建 JS 对象的正确方法来表示这个数组。

我一直在查看similar questions,但找不到我的问题的答案。

我需要生成一个类似于以下的 XML 属性:

<ns1:ArrayOfInts>
          <!--Zero or more repetitions:-->
          <arr:int>2904</arr:int>
          <arr:int>3089</arr:int>
          <arr:int>4531</arr:int>
</ns1:ArrayOfInts>

通过传递一个包含数组的对象:

soapObject = {
              somefields,
              "ns1:ArrayOfInts": {
                 Something goes here
              },
             };

知道如何创建 JS 对象吗?

【问题讨论】:

  • 也许你需要在 "ns1:ArrayOfInts" 中传递一个数组,例如 soapObject= { some:"field", ArrayOfInts: [2904,3089,4531] };
  • 我试过了,它很接近,但它不包含 WSDL 方法稍后需要的“arr”命名空间前缀,即:29043089

标签: javascript arrays node.js soap node-soap


【解决方案1】:

我遇到了同样的问题,使用 $xml 属性将原始 XML 添加到请求中,并使用 attributes 设置 arr 命名空间:

var fields = [2904, 3089, 4531];
soapObject.arrayOfInts = {
    attributes: {
        'xmlns:arr': 'http://schemas.microsoft.com/2003/10/Serialization/Arrays'
    },
    $xml: fields.map(function(value) {
        return '<arr:int>' + value + '</arr:int>';
    }).join('')
};

此代码将生成以下请求:

<ns1:arrayOfInts xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
    <arr:int>2904</arr:int>
    <arr:int>3089</arr:int>
    <arr:int>4531</arr:int>
</ns1:arrayOfInts>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多