How to change namespace for request body in software ag desinger!

Hello I need to change the namespaces of the request body in the software ag kindly note the request body direct putted in the input of the flow service how i change it !
I need to change the boj to pan in the request in soap ui how i can change it .
image
e

Hi Mohammad,

hopefully, the boj-namespace is defined in the Envelope line somewhere.

Do you have the XSD/WSDL for this request document?
Then you can import it via Designer to your IS.

Which version of wM are you running on?

Can you describe why you want to change the namespace?

Regards,
Holger

we don’t have xsd / wsdl we consume the stored procedure then convert it to soap API .
where i can find the envelope line define the boj ?

we need to change namespace to match the integration the old API to new API this is API called the third party !

Hi Mohammad,

the first line of the shown xml, “soapEnv:Envelope”, contains a list of all defined namespaces, beginning with soapEnv.

Usually, namespaces are matched by the defined namespace URI and not by the namespace prefix itself.

How was the xml generated in SoapUI if not by WSDL/XSD?
You do not neccessarily require these files locally but you can retrieve them from the API-Hoster by adding a parameter to the URL. For an IS just add “?WSDL” to the service URL to retrieve the WSDL for the WebService.

Regards,
Holger

You’ll want to research/read/study to become more familiar with XML and namespaces.

It is very likely that the boj prefix does not need to be changed at all. The “boj” is not the namespace but is an element prefix that refers to the namespace.

In your screen shot the soapenv:Envelope element line will define the prefix to be used for a given namespace, though your screen shot has cutoff the line.

The prefix does not need to be any specific value as long as that value is declared.

For example, in your screen shot the xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” declares “soapenv” as the prefix for that namespace. It does not need to be that value, It can be anything. For example:

<foo:Envelope xmlns:foo="http://schemas.xmlsoap.org/soap/envelope/" xmlns:boj="unknown.namespace.value">
  <fooHeader/>
  <foo:Body>
    <boj:prGetDepositRate>

Is semantically equivalent to the XML in your screen shot. XML parsers will have no issue with parsing the XML correctly.

Similarly, the boj prefix can remain as is, as long as the namespace it references is correct. You can use boj, pan, foo, bar, xyz, silly, etc. as the prefix and it would be processed just fine – assuming the server the XML is sent to is a typcial XML parser.

If the code is a client calling a SOAP endpoint then that endpoint should have a WSDL that defines what it is expecting to receive. Not absolutely necessary, but based upon your query here I would suggest getting the WSDL and using that to create components in Integration Server (using Designer) would simplify your work.

2 Likes

Hello ,
I know what you say but I need to rename the prefix name that called boj to ban how I can do that !

thank you I know what you say but I need to change the prefix name from boj to ban I consume the stored procedures then retrieve the flow service to wsdl how I can do that !

thank you .

Hi Mohammad,

for the case that this is really neccessary, you can use public built-in-services for XSLT transformation (from package WmPublic) or just perform some sort of “search and replace” on the String representation of the document.

Regards,
Holger

Unless one has strong XSLT skills I would avoid that. Instead I would suggest using pub.xml:xmlStringToXMLNode, xmlNodeToDocument and then documentToXMLString using nsDecls inputs as needed to get the desired namespace prefix.

I would definitely not do that. It is way too easy to mess up the search and replace because of the relative complexity of XML syntax. Could very well end up replacing something that should not be replaced.

What is the specific reason for this? Namespace prefixes do not need to be anything specific. The provider of the SOAP service does not dictate what the prefixes are. Only need to have the prefix refer to the correct namespace value.

You would use the WSDL to either create a WSC service and related components. Then you would have a service that calls the stored procedure then uses the data to call the WSC service that makes the call to the SOAP provider. (Assuming I’ve understood your steps properly). The wM documentation describes how to use WSDLs to create client components.

2 Likes

This definitely sounds like an xy problem. Instead of asking a solution to your attempted solution you should post your requirements and your actual problem. You probably don’t need to change “boj” to something else. Also using a stored procedure to get some data from a database has nothing to do with web services or XML prefixes. Is the SP, implemented to generate the XML string or something? Even if that’s the case; still, you shouldn’t need to modify the prefixes anyway.

edit: For a better analogy the thing you are trying to change is like a pointer/reference. Ask yourself this question. Have you ever needed to change the actual value(memory address of the object) of a pointer/reference manually?

1 Like

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.