PHP запрос cURL получает XML данные как PHP объект - PullRequest
0 голосов
/ 10 июля 2020

Я получаю данные страницы XML в запросе curl. В настоящий момент данные хранятся в переменной, а с помощью var_dump () содержимое файла XML без тегов сохраняется в переменной. Но я хочу сохранить данные XML как объект PHP. Я пробовал как новый SimpleXMLElement ($ data), так и simplexml_load_string (). Оба не работают. С SimpleXMLElement ($ data) я возвращаю пустой объект.

EDIT: XML Данные, которые я получаю, используют пространства имен:

<ad:ad key="228228073" url="https://services.mobile.de/search-api/ad/228228073"><ad:creation-date value="2017-11-07T08:05:48+01:00"><ad:modification-date value="2020-05-25T11:37:22+02:00"><ad:detail-page url="https://suchen.mobile.de/auto-inserat/andere-andere-radical-rxc-spyder-v8-paddle-shift-schaltung-adenau/228228073.html?source=api"><ad:vehicle><ad:class key="Car" url="https://services.mobile.de/refdata/classes/Car"><resource:local-description xml-lang="en">Car</resource:local-description></ad:class><ad:category key="Cabrio" url="https://services.mobile.de/refdata/classes/Car/categories/Cabrio"><resource:local-description xml-lang="en">Cabriolet / Roadster</resource:local-description></ad:category><ad:make key="ANDERE" url="https://services.mobile.de/refdata/classes/Car/makes/ANDERE"><resource:local-description xml-lang="en">Other</resource:local-description></ad:make><ad:model key="ANDERE" url="https://services.mobile.de/refdata/classes/Car/makes/ANDERE/models/ANDERE"><resource:local-description xml-lang="en">Other</resource:local-description></ad:model><ad:model-description value="Radical RXC Spyder V8, Paddle-Shift-Schaltung"><ad:damage-and-unrepaired value="false"><ad:accident-damaged value="false"><ad:roadworthy value="true"><ad:features url="https://services.mobile.de/refdata/classes/Car/features"><ad:feature key="ALLOY_WHEELS" url="https://services.mobile.de/refdata/classes/Car/features/ALLOY_WHEELS"><resource:local-description xml-lang="en">Alloy wheels</resource:local-description></ad:feature><ad:feature key="POWER_ASSISTED_STEERING" url="https://services.mobile.de/refdata/classes/Car/features/POWER_ASSISTED_STEERING"><resource:local-description xml-lang="en">Power Assisted Steering</resource:local-description></ad:feature><ad:feature key="FULL_SERVICE_HISTORY" url="https://services.mobile.de/refdata/classes/Car/features/FULL_SERVICE_HISTORY"><resource:local-description xml-lang="en">Full Service History</resource:local-description></ad:feature><ad:feature key="SPORT_SEATS" url="https://services.mobile.de/refdata/classes/Car/features/SPORT_SEATS"><resource:local-description xml-lang="en">Sport seats</resource:local-description></ad:feature><ad:feature key="PERFORMANCE_HANDLING_SYSTEM" url="https://services.mobile.de/refdata/classes/Car/features/PERFORMANCE_HANDLING_SYSTEM"><resource:local-description xml-lang="en">Sports suspension</resource:local-description></ad:feature><ad:feature key="SPORT_PACKAGE" url="https://services.mobile.de/refdata/classes/Car/features/SPORT_PACKAGE"><resource:local-description xml-lang="en">Sports package</resource:local-description></ad:feature><ad:feature key="MULTIFUNCTIONAL_WHEEL" url="https://services.mobile.de/refdata/classes/Car/features/MULTIFUNCTIONAL_WHEEL"><resource:local-description xml-lang="en">Multifunction steering wheel</resource:local-description></ad:feature><ad:feature key="NONSMOKER_VEHICLE" url="https://services.mobile.de/refdata/classes/Car/features/NONSMOKER_VEHICLE"><resource:local-description xml-lang="en">Non-smoker vehicle</resource:local-description></ad:feature></ad:features><ad:specifics><ad:exterior-color key="WHITE" url="https://services.mobile.de/refdata/colors/WHITE"><resource:local-description xml-lang="en">White</resource:local-description><ad:manufacturer-color-name value="Brilliantweiß"></ad:manufacturer-color-name></ad:exterior-color><ad:mileage value="1500"><ad:first-registration value="2015-01"><ad:emission-sticker key="EMISSIONSSTICKER_NONE" url="https://services.mobile.de/refdata/emissionstickers/EMISSIONSSTICKER_NONE"><resource:local-description xml-lang="en">1 (None)</resource:local-description></ad:emission-sticker><ad:fuel key="PETROL" url="https://services.mobile.de/refdata/fuels/PETROL"><resource:local-description xml-lang="en">Petrol</resource:local-description></ad:fuel><ad:power value="353"><ad:gearbox key="MANUAL_GEAR" url="https://services.mobile.de/refdata/gearboxes/MANUAL_GEAR"><resource:local-description xml-lang="en">Manual gearbox</resource:local-description></ad:gearbox><ad:climatisation key="NO_CLIMATISATION" url="https://services.mobile.de/refdata/climatisations/NO_CLIMATISATION"><resource:local-description xml-lang="en">No climatisation</resource:local-description></ad:climatisation><ad:num-seats value="2"><ad:cubic-capacity value="3000"><ad:condition key="USED" url="https://services.mobile.de/refdata/conditions/USED"><resource:local-description xml-lang="en">Used vehicle</resource:local-description></ad:condition><ad:interior-color key="BLACK" url="https://services.mobile.de/refdata/interiorColors/BLACK"><resource:local-description xml-lang="en">Black</resource:local-description></ad:interior-color><ad:interior-type key="OTHER_INTERIOR_TYPE" url="https://services.mobile.de/refdata/interiorTypes/OTHER_INTERIOR_TYPE"><resource:local-description xml-lang="en">Other</resource:local-description></ad:interior-type><ad:number-of-previous-owners>1</ad:number-of-previous-owners><ad:countryversion key="DE" url="https://services.mobile.de/refdata/countryVersion/DE"></ad:countryversion></ad:cubic-capacity></ad:num-seats></ad:power></ad:first-registration></ad:mileage></ad:specifics></ad:roadworthy></ad:accident-damaged></ad:damage-and-unrepaired></ad:model-description></ad:vehicle><ad:highlights><ad:highlight>Flaggschiff mit 480 PS</ad:highlight></ad:highlights><ad:description></ad:description><ad:images count="1" gallery-url="https://i.ebayimg.com/00/s/MTIwMFgxNjAw/z/k3gAAOSw~ppbozeN/$_23.JPG" url="https://services.mobile.de/search-api/ad/228228073/images"><ad:image><ad:representation size="S" url="https://i.ebayimg.com/00/s/MTIwMFgxNjAw/z/k3gAAOSw~ppbozeN/$_18.JPG"><ad:representation size="XL" url="https://i.ebayimg.com/00/s/MTIwMFgxNjAw/z/k3gAAOSw~ppbozeN/$_27.JPG"><ad:representation size="ICON" url="https://i.ebayimg.com/00/s/MTIwMFgxNjAw/z/k3gAAOSw~ppbozeN/$_23.JPG"><ad:representation size="L" url="https://i.ebayimg.com/00/s/MTIwMFgxNjAw/z/k3gAAOSw~ppbozeN/$_1.JPG"><ad:representation size="M" url="https://i.ebayimg.com/00/s/MTIwMFgxNjAw/z/k3gAAOSw~ppbozeN/$_24.JPG"></ad:representation></ad:representation></ad:representation></ad:representation></ad:representation></ad:image></ad:images><ad:price currency="EUR" type="FIXED"><ad:consumer-price-amount value="82900.00"><ad:vatable value="true"><ad:vat-rate value="0.1900"></ad:vat-rate></ad:vatable></ad:consumer-price-amount></ad:price><seller:seller key="7562881" url="https://services.mobile.de/search-api/seller/7562881"><seller:type value="DEALER" commercial="true"><seller:address><seller:zipcode value="53518"><seller:city value="Adenau"><seller:country-code value="DE"></seller:country-code></seller:city></seller:zipcode></seller:address><seller:coordinates><seller:latitude>50.379811</seller:latitude><seller:longitude>6.945469</seller:longitude></seller:coordinates></seller:type></seller:seller></ad:detail-page></ad:modification-date></ad:creation-date></ad:ad>

Вот мой код:

<code><?php
function CallAPI($method, $url, $data = false)
{
    $curl = curl_init();

    switch ($method)
    {
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);

            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_PUT, 1);
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }

    // Optional Authentication:
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_USERPWD, "XXX:XXX");

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($curl);
    // $result = htmlentities($result);

    curl_close($curl);

    return $result;
}
echo '<pre>';
$data = CallAPI('GET', 'https://myurl.com');
// $oXML = new SimpleXMLElement($data);
var_dump($data);
echo '
'; ?>
...