Nie mogę się dowiedzieć, jak ustawić atrybut dla żądania SOAP bez korzystania z kodowania XSD_ANYXML.Żądanie SOAP z atrybutem
Parametr wniosek powinien wyglądać następująco
<request
xmlns:ns="/some/ns">
...
<ns:parameter attr="some attribute">
value
</ns:parameter>
...
</request>
Oczywiście poniższy kod działa, ale jest to raczej brzydki (brzydkie, ponieważ wykorzystuje ciąg konkatenacji gdzie powinien korzystania z SOAP_Client API a ponieważ robi nie należy stosować ogólne nazw)
$param = new SoapVar(
'<ns_xxx:parameter xmlns:ns_xxx="/some/ns" attr="some attribute">
value
</ns_xxx:parameter>',
XSD_ANYXML
);
Czy istnieje lepszy sposób, aby utworzyć parametr żądania mydło z nazw i atrybut?
Szukam s.th. jak poniżej (jest to tylko niektóre pseudo kod używając SoapVar API):
$param = new SoapVar(
array(
'_' => 'value',
'attr' => 'some attribute'
),
SOME_ENCODING,
null,
null,
null,
'/some/ns'
);
Nie jestem tak dobrze zorientowany w SOAP, jak chcę, ale czy obsługuje on żądania z atrybutami? (Wiem, że WSDL ma atrybuty, ale jak przetwarza atrybuty w XML wysłanym do niego?) Czy tworzysz usługę, czy jest już skonfigurowana? Jeśli to twoja usługa, upuszczę część atrybutu i przeniesię ją do jej własnego elementu w parametrze. Może jako element bez wartości, np. ' ' –
Anthony
@Anthony: niestety nie kontroluję serwera SOAP i nie mam wpływu na definicję usługi (w przeciwnym razie mógłbym po prostu uczynić atrybut elementem –