PHP SoapClient: setați un spațiu de nume fără prefix

voturi
0

Sunt consumatoare de un serviciu WSDL SOAP folosind SoapClient PHP. Fișierul XML generat conține următoarele definiții spațiul de nume:

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

Iar elementele din acest ns1spațiu de nume sunt toate prefixate cu ns1:elementName.

Furnizorul de servicii spune că acest lucru este greșit și ei doresc aceste elemente fără prefixul, chiar dacă WSDL definește o cerință pentru ea: xmlns:tns=WebApplicationImport elementFormDefault=qualified.

O soluție este de a face următoarele înainte de a trimite XML: $xml = str_replace(':ns1', '', $xml);. Aceasta funcționează, dar este în mod clar un hack, iar eu nu sunt un fan al hacks.

Există o modalitate de a spune SoapClientsă se ocupe de un spațiu de nume specific ca implicit / nu - l adăugați prefixul? Ceea ce aș dori să realizeze este <SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/ xmlns=WebApplicationImport>înainte de a genera restul pachetului, ceea ce ar, teoretic, să se asigure că toate elementele din acel spațiu de nume sunt , de asemenea , fără prefix. Acest lucru s - ar părea soluția corectă și valabilă pentru mine.

Întrebat 24/10/2019 la 12:57
sursa de către utilizator
În alte limbi...                            

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