PHP cURL无法创建XML

时间:2016-05-23 16:15:28

标签: php xml curl

我正在尝试从URL获取XML文件。 但我只得到文件中的文字,没有语法。

我的代码:

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, 'https://services.mobile.de/search-api/search?country=DE&sort.field=makeModel&sort.order=ASCENDING');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: Basic '. base64_encode("username:password"), 'Accept: 
    application/xml'));
    $xml = new SimpleXMLElement(curl_exec($ch));//line 14
    curl_close($ch);
    print_r($xml);

我的输出:

....sensorsBlackEuro5PetrolManual gearboxAutomatic air conditioningUsed vehicle150.90525114.812090CarSmall CarVolkswagenPoloCentral lockingElectric windowsImmobilizerPower Assisted SteeringABSESPFull Service HistoryElectric side mirrorOn-board computerCD playerTuner/radioIsofix (child seat anchor points)Parking sensor

Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : Start tag expected, '<' not found in /Applications/XAMPP/xamppfiles/htdocs/test.php on line 14

Warning: SimpleXMLElement::__construct(): 1 in /Applications/XAMPP/xamppfiles/htdocs/test.php on line 14

Warning: SimpleXMLElement::__construct(): ^ in /Applications/XAMPP/xamppfiles/htdocs/test.php on line 14

Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in /Applications/XAMPP/xamppfiles/htdocs/test.php:14 Stack trace: #0 /Applications/XAMPP/xamppfiles/htdocs/test.php(14): SimpleXMLElement->__construct('1') #1 {main} thrown in /Applications/XAMPP/xamppfiles/htdocs/test.php on line 14

更新

我现在在浏览器中找到正确的字符串:

echo '<pre>';
echo htmlspecialchars(print_r(curl_exec($ch), true));
echo '</pre>';

但是当我尝试使用时:

$sxe = simplexml_load_string($re);
print_r($sxe);

我只能得到这个:

SimpleXMLElement Object ( )

1 个答案:

答案 0 :(得分:1)

只有一个参数的

new SimpleXMLElement()期望XML(manual)和curl_exec($ch)默认返回truefalsemanual)。因此很清楚为什么这不起作用:

$xml = new SimpleXMLElement(curl_exec($ch));//line 14

您可能希望按照curl_exec手册页中的提示进行操作:

  

成功时返回TRUE,失败时返回FALSE。但是,如果   设置CURLOPT_RETURNTRANSFER选项后,它将返回结果   成功,失败就错了。

...但您仍需要验证它不是false。如果省略错误检查,您的代码会偶尔随机失败。