Ниже приведен запрос, сгенерированный в 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
, это меняет корневое пространство имен.Любое решение для этого?