So we've got ourselves a lovely vintage PHP WS we must integrate via JAX-RPC and this WS delivers some responses as follows:
<return SOAP-ENC:arrayType="SOAP-ENC:Array[1]" xsi:type="SOAP-ENC:Array">
<item SOAP-ENC:arrayType="xsd:ur-type[3]" xsi:type="SOAP-ENC:Array">
<item xsi:type="xsd:string">...</item>
<item xsi:type="xsd:float">...</item>
<item xsi:type="xsd:int">...</item>
</item>
</return>
Now the problem is, JAX-RPC doesn't seem to know about ur-type
We thought about using a Handler
for doing a search and replace on the the responses' XML or transforming it via XSLT
so that ur-type
=> anyType
but we can't seem to figure it out how to do it. Specifically what OutputStream
/ StreamResult
could we use for the transformation?
Any other suggestion is more than welcomed :)
So if the end we gave up with our idea of using a
XSLT
or doing a search and replace on the rawXML
.We're using
SOAPBody
to manipulate the responses'DOM
and replaceur-type
withanyType
and everything works out just fine. Nonetheless, if you have any better idea, please do post it.Edit: here's how we basically did it.
This goes in the class where you get the port, you need to register the handler where you do your search and replace:
And this is how the handler looks like: