节点肥皂服务器,从响应中删除名称空间

时间:2020-01-29 10:16:31

标签: javascript node.js soap xml-namespaces node-soap

我正在使用vpulim / node-soap创建一个肥皂服务器。
除了一件事,一切都很好。
我的请求结果是这样的:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:tns="http://tempuri.org/">
    <soap:Body>
        <tns:StatelessImportEntityResponse>
            <tns:return>something</tns:return>
        </tns:StatelessImportEntityResponse>
    </soap:Body>
</soap:Envelope>

但是打电话给我的客户端需要这样:(区别是从返回标记中删除了'tns'名称空间)

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:tns="http://tempuri.org/">
    <soap:Body>
        <tns:StatelessImportEntityResponse>
            <return>something</return>
        </tns:StatelessImportEntityResponse>
    </soap:Body>
</soap:Envelope>

因此,我试图删除名称空间,但是没有成功,我尝试使用overrideRootElement wsdl选项,如示例here所示,该示例似乎确实可以完成我想要的操作,但对我而言却无法正常工作。 .. 我这样使用它:

soap.listen(mailRouterServer.server, {
   path: '/mailRouter',
   services,
   xml,
   overrideRootElement: {
      namespace: 'xmlns:tns',
      xmlnsAttributes: [{
        name: 'xmlns:ns2',
        value: 'http://tempuri.org/'
      }, {
        name: 'xmlns:ns3',
        value: 'http://sillypets.com/xsd'
      }]
   }
})

目前,我将其用作解决方法:

soapServer.on('response', (response) => {
     response.result = response.result.replace(/tns:return/g, 'return');
});

但是感觉真的很糟糕:(

0 个答案:

没有答案