Я звоню в веб-службу, используя SoapClient, и пытаюсь получить данные из вывода ответа.Я изменил ответ Soap, чтобы он отображался в XML.
Я сделал это, написав это: $resultxml = htmlentities($client->__getLastResponse()) . "\n";
.
Если вы выполните простое print_r($resultxml);
, вы получите полный вывод, очевидно.
У меня проблемы с использованием DomDocument
с $resultxml
для создания моего techData
массива.Если я скопирую и вставлю вывод Soap и создам с ним отдельный XML-файл, то добавлю его в $dom->loadXML();
, массив techData
будет создан идеально.Однако, когда я пытаюсь извлечь XML из $resultxml
, я получаю пустой массив.
Есть идеи, почему это так?Должен ли я рассмотреть пересмотр $resultxml = htmlentities($client->__getLastResponse()) . "\n";
?Я называю это неправильно?
Большое спасибо.
Мой PHP с моим запросом SoapClient и кодом массива:
<?php
$client = new SoapClient('http://services.chromedata.com/Description/7b?wsdl', array('trace' => 1));
$account = ['number'=>"", 'secret'=>"", 'country'=>"US", 'language'=>"en"];
$switch = ["ShowAvailableEquipment", "ShowExtendedTechnicalSpecifications", "ShowExtendedDescriptions"];
$vin = $_POST["b12"];
$result = $client->describeVehicle([
'accountInfo' => $account,
'switch' => $switch,
'vin' => $vin
]);
$resultxml = htmlentities($client->__getLastResponse()) . "\n";
$dom = new DOMDocument();
$dom->loadXML($resultxml);
$techData = [];
foreach ( $dom->getElementsByTagName('technicalSpecification') as $techSpec ) {
$id = $techSpec->getElementsByTagName('titleId')->item(0)->nodeValue;
$techData [$id]= $techSpec->getElementsByTagName('value')->item(0)->getAttribute("value")."<br>";
}
print_r($techData);
echo "<br>";