[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: как добавить атрибут в xml?
Гость_Денис
Добрый день, знатоки. Второй день ломаю голову над такой проблемой. Формирую XML для отправки его вэб-сервису. Осталась одна деталь, которую никак не могу сделать. а именно:
необходимо добавить атрибут к тэгу в XML.
Сейчас формируется кусок xml в таком виде
<sysInfo>
<CreateDateTime>
2011-05-24T18:00:35Z</CreateDateTime>
</sysInfo>

а нужно
<sysInfo attrib = "attrib_value">
<CreateDateTime>
2011-05-24T18:00:35Z</CreateDateTime>
</sysInfo>

пример, который широко распространен в сети и в описании soapVar, возвращает не то:
$amount['_'] = 25;
$amount['currencyId'] = 'GBP';
$sysInfo = new SoapVar( $amount, SOAP_ENC_OBJECT);

возвращает
<sysInfo>
<_>25</_>
<currencyId>GBP</currencyId>
</sysInfo>

// --------------------------
вызов метода с параметрами
$response = $client->__soapCall('createCheckupDemand',
array(new SoapParam('attrib_value', 'attrib_name'),
new SoapParam('attrib_value', 'attrib_name'),
new SoapVar($struct, SOAP_ENC_OBJECT)),
array('soapaction' => 'http://www.example.com/webservices/GetFilteredRecordList'));

добавляет ЭЛЕМЕНТ с именем и значением параметра в xml, что тоже не подходит.

Может, кто-то сталкивался с похожей проблемой? подскажите пжлст! спасибо.



Спустя 2 часа, 43 минуты, 45 секунд (25.05.2011 - 10:18) Guest написал(а):
Либо можно как-то получить текст xml-запроса перед отправкой веб-сервису? чтобы вручную его поправить и отправить.

Спустя 1 час, 30 минут, 57 секунд (25.05.2011 - 11:49) Guest написал(а):
вопрос решил. код привожу ниже:

try {
$client = new SoapClient('http://www.webservicex.net/geoipservice.asmx?WSDL',
array('trace' => 1)
);

$std = new stdClass();
$std->IPAddress = new SoapVar('<myns:IPAddress xmlns:myns="http://www.webservicex.net/" testAttribute="Test">192.168.0.1</myns:IPAddress>', XSD_ANYXML);
$client->GetGeoIP($std);

$dom = new DOMDocument;
$dom->loadXML($client->__getLastRequest());
$dom->formatOutput = true;
echo $dom->saveXML(), "\n";
$dom->loadXML($client->__getLastResponse());
echo $dom->saveXML(), "\n";
echo "Request headers: \n", $client->__getLastRequestHeaders(), "\n";
echo "Response headers: \n", $client->__getLastResponseHeaders(), "\n";

} catch(Exception $e) {

}

Спустя 1 час, 28 минут, 30 секунд (25.05.2011 - 13:18) linker написал(а):
Задрали, неужели так сложно нажимать соответствующие кнопочки для оформления php и xml-кода?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.