PHP SoapClient: ορίσετε ένα namespace χωρίς πρόθεμα

ψήφοι
0

Είμαι καταναλώνουν μια υπηρεσία WSDL SOAP, χρησιμοποιώντας SoapClient της PHP. Το παραγόμενο XML περιέχει τους ακόλουθους ορισμούς ονομάτων:

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

Και τα στοιχεία από αυτό το ns1namespace όλα πρόθεμα ns1:elementName.

Ο πάροχος υπηρεσιών λέει ότι αυτό είναι λάθος και θέλουν αυτά τα στοιχεία χωρίς το πρόθεμα, αν και η WSDL ορίζει την υποχρέωση για την: xmlns:tns=WebApplicationImport elementFormDefault=qualified.

Μια λύση είναι να κάνετε τα εξής πριν από την αποστολή του XML: $xml = str_replace(':ns1', '', $xml);. Αυτό λειτουργεί, αλλά είναι σαφώς ένα σιδηροπρίονο, και δεν είμαι οπαδός του αμυχές.

Είναι ένας τρόπος για να πει εκεί SoapClientγια να χειριστεί ένα συγκεκριμένο πεδίο ονομάτων ως προεπιλεγμένο / δεν το πρόθεμα; Αυτό που θα ήθελα να επιτύχουμε είναι <SOAP-ENV:Envelope xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/ xmlns=WebApplicationImport>πριν από τη δημιουργία το υπόλοιπο του φακέλου, η οποία, θεωρητικά, βεβαιωθείτε ότι όλα τα στοιχεία από εκείνη την περιοχή είναι επίσης χωρίς πρόθεμα. Αυτό θα φαίνεται σαν η σωστή και έγκυρη λύση για μένα.

Δημοσιεύθηκε 24/10/2019 στις 12:57
πηγή χρήστη
Σε άλλες γλώσσες...                            

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