PHP SoapClient: stel een namespace zonder voorvoegsel

stemmen
0

Ik ben het nuttigen van een WSDL SOAP service met behulp van PHP SoapClient. De gegenereerde XML bevat de volgende naamruimtedefinities:

<SOAP-ENV:Envelope
    xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/
    xmlns:ns1=WebApplicationImport
    ....>

En de elementen uit deze ns1namespace zijn allemaal voorafgegaan door ns1:elementName.

De dienstverlener zegt dat dit verkeerd is en ze willen deze elementen zonder het voorvoegsel, hoewel de WSDL definieert een vereiste voor deze: xmlns:tns=WebApplicationImport elementFormDefault=qualified.

Een oplossing is om het volgende te doen voordat u de XML: $xml = str_replace(':ns1', '', $xml);. Dit werkt, maar is duidelijk een hack, en ik ben geen fan van hacks.

Is er een manier om te vertellen SoapClientaan een specifieke namespace te behandelen als de standaard / niet voorvoegsel het? Wat ik wil bereiken is <SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/ xmlns=WebApplicationImport>voor het genereren van de rest van het omhulsel, hetgeen in theorie waarborgen dat alle elementen uit die naamruimte ook unprefixed. Dit lijkt net als de juiste en geldige oplossing voor mij.

De vraag is gesteld op 24/10/2019 om 12:57
bron van user
In andere talen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more