Узел мыла: добавление пространства имен к дочернему элементу - PullRequest
0 голосов
/ 13 декабря 2018

Ниже приведен запрос, сгенерированный в SoapUI при доступе к WSDL.

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <SOAP-ENV:Body>
      <READ_WRITE_REQ_IN_GBO xmlns="http://example.com/getBalance">
         <MetaInfo>
            <ConsumerReqInfo xmlns="http://pqr.com/">
               <circleId>MP</circleId>
               <serviceName>ABC</serviceName>
               <channelName>SCRM</channelName>
               <segment>POSTPAID</segment>
            </ConsumerReqInfo>
         </MetaInfo>
      </READ_WRITE_REQ_IN_GBO>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Теперь я пытаюсь сгенерировать тот же xml, используя модуль js мыльного узла.Код узла JS:

    var request = { 
    "MetaInfo" : {
        "ConsumerReqInfo": {
            "circleId":["MP"],
            "serviceName":"ABC",
            "channelName":["SCRM"],
            "segment":["POSTPAID"]
        }
    }
}

var urlGetAccBal = 'http://localhost:8080/axis2/services/GetAccountBalance?wsdl';
soap.createClient(urlGetAccBal, function(err, client) {
    if(err){
        console.log("## Error : "+err);
    } else {
        client.GetAccountBalanceOperation(request,function(err, result){        
                if(err){
                    console.log("## Error : "+err);
                } else {
                    console.log("## Result : "+JSON.stringify(result));
                }
            });
        }
}); 

Но он генерирует ниже xml,

<?xml version='1.0' encoding='utf-8'?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://example.com/getBalance"><soap:Body>
<tns:READ_WRITE_REQ_IN_GBO>
    <MetaInfo>
        <ConsumerReqInfo>
            <circleId>MP</circleId>
            <serviceName>ABC</serviceName>
            <channelName>SCRM</channelName>
            <segment>POSTPAID</segment>
        </ConsumerReqInfo>
    </MetaInfo>
</tns:READ_WRITE_REQ_IN_GBO>
</soap:Body>
</soap:Envelope>

Итак, мой вопрос: как добавить пространство имен к элементу ConsumerReqInfo, пространство имен которого отличается от корневого пространства имен?

Если я использую опции wsdl: overrideRootElement, это меняет корневое пространство имен.Любое решение для этого?

...