Я не могу понять, как установить атрибут для запроса SOAP без использования кодировки XSD_ANYXML.SOAP-запрос с атрибутом
Параметр запроса должен выглядеть следующим образом
<request
xmlns:ns="/some/ns">
...
<ns:parameter attr="some attribute">
value
</ns:parameter>
...
</request>
Конечно следующий код работает, но это довольно уродливые (некрасиво, потому что он использует конкатенацию, где он должен использовать SOAP_Client API и потому, что он делает не использовать общее пространство имен)
$param = new SoapVar(
'<ns_xxx:parameter xmlns:ns_xxx="/some/ns" attr="some attribute">
value
</ns_xxx:parameter>',
XSD_ANYXML
);
есть ли лучший способ создать параметр запроса SOAP с пространством имен и атрибутов?
Я ищу с.th. как следующий (это лишь некоторые псевдо-код, используя SoapVar API):
$param = new SoapVar(
array(
'_' => 'value',
'attr' => 'some attribute'
),
SOME_ENCODING,
null,
null,
null,
'/some/ns'
);
Я не так хорошо разбираюсь в SOAP, каким хочу быть, но поддерживает ли он запросы с атрибутами? (Я знаю, что WSDL имеет атрибуты, но как он обрабатывает атрибуты в отправленном XML?) Создаете ли вы службу или уже настроены? Если это ваш сервис, я бы отбросил часть атрибута и переместил его в свой собственный элемент внутри параметра. Может быть, как элемент без значения, например ' ' –
Anthony
@Anthony: я, к сожалению, не контролирую SOAP-сервер и не влияю на определение сервиса (иначе, конечно, я мог бы просто сделать атрибут элементом –