Hallo,
ich mache einen CALL zu einer API. Dazu benutze ich CURL und bekomme als Response einen XML-String. Das XML ist genau das, was ich von der API auch als antwort erwarte.
Das ist mein Code für den CURL Call:
Ich erhalte folgendes XML als String:
ich habe schon diverse Möglichkeiten versucht, das nun zu parsen und als Objekt weiter zu verarbeiten... leider ohne Erfolg...
wenn ich mir das Ergebnis davon als var_dump ausgeben lasse, erhalte ich nur:
Habe dann gelesen, man muss das mit Namespaces anders machen
aber da bekomm ich aus der Schleife gar keine Ausgabe...
wie mach ich das korrekt?
ich mache einen CALL zu einer API. Dazu benutze ich CURL und bekomme als Response einen XML-String. Das XML ist genau das, was ich von der API auch als antwort erwarte.
Das ist mein Code für den CURL Call:
Code:
$curl = curl_init($this->api_base . $this->endpoint); curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC ); curl_setopt($curl, CURLOPT_USERPWD, $this->getAuthString()); curl_setopt($curl, CURLOPT_FAILONERROR, true); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_HTTPHEADER, [ 'Content-Type: application/xml', 'Accept: application/xml', 'Connection: Keep-Alive' ]); $response = curl_exec($curl); $curl_error = curl_error($curl); curl_close($curl);
Ich erhalte folgendes XML als String:
Code:
<!--?xml version="1.0" encoding="UTF-8" standalone="yes"?--> <search:search-result xmlns:seller="http://services.mobile.de/schema/seller" xmlns:ad="http://services.mobile.de/schema/ad" xmlns:search="http://services.mobile.de/schema/search" xmlns:financing="http://services.mobile.de/schema/common/financing-1.0" xmlns:resource="http://services.mobile.de/schema/resource" xmlns:error="http://services.mobile.de/schema/common/error-1.0"> <search:total>2</search:total> <search:page-size>20</search:page-size> <search:current-page>1</search:current-page> <search:max-pages>1</search:max-pages> <search:ads> <ad:ad key="263518873" url="https://services.mobile.de/search-api/ad/1234"> <ad:creation-date value="2018-06-14T10:07:33+02:00"> ... </search:ads> </search:search-result>
PHP-Code:
simplexml_load_string($response)
Code:
object(SimpleXMLElement)#839 (0) { }
Code:
define('XMLNS_AD', 'http://services.mobile.de/schema/ad'); define('XMLNS_SEARCH', 'http://services.mobile.de/schema/search'); foreach ( simplexml_load_string($response)->list->children(XMLNS_SEARCH)->item as $item) { echo 'Item: ' . (string)$item . "\n"; }
wie mach ich das korrekt?
Kommentar