Я хочу сгенерировать xml wsdl-запрос с такими параметрами, как tem:sessionId
, но мой php-код генерирует x:sessionId
. я не знаю, как конвертировать x:
в tem:
Документ SimpleXML PHP add child с tem: tagName
результат мне нужно:
<?xml version="1.0"?>
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<x:Header/>
<x:Body>
<tem:GetServicesByProvider>
<tem:sessionId>890925</tem:sessionId>
<tem:ProviderId>29</tem:ProviderId>
<tem:mac/>
</tem:GetServicesByProvider>
</x:Body>
</x:Envelope>
это мой PHP код
private function createXMLRequest($function, $params)
{
$xml = new \SimpleXMLElement('<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/"><x:Header/></x:Envelope>');
$body = $xml->addChild('Body');
$f = $body->addChild($function, '');
foreach ($params as $param) {
$f->addChild($param['tag'], $param['text']);
}
return $xml;
}
но он генерирует это:
<?xml version="1.0"?>
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
<x:Header/>
<x:Body>
<x:GetServicesByProvider>
<x:sessionId>890925</x:sessionId>
<x:ProviderId>29</x:ProviderId>
<x:mac/>
</x:GetServicesByProvider>
</x:Body>
</x:Envelope>
Когда я добавляю метод 'tem:' to' addChild', он автоматически удаляет 'tem:'. –
@ 543310 Вы уверены, что в качестве третьего параметра вы также указали правильный URL-адрес пространства имен? Я протестировал этот код, прежде чем опубликовать его, и он произвел именно то, что вы хотите. Попробуйте сами: https://3v4l.org/majj9 – IMSoP