Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP cURL可以';不能创建XML_Php_Xml_Curl - Fatal编程技术网

PHP cURL可以';不能创建XML

PHP cURL可以';不能创建XML,php,xml,curl,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,

我正在尝试从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
我只知道:

$xml = new SimpleXMLElement(curl_exec($ch));//line 14
new simplexmlement()
只有一个参数,默认情况下,XML()和
curl\u exec($ch)
返回
true
false
)。因此,很清楚为什么这不起作用:

您可能希望遵循curl_exec手册页面上的提示:

成功时返回TRUE,失败时返回FALSE。但是,如果 CURLOPT_RETURNTRANSFER选项已设置,它将在 成功,失败为假


。。。但是您仍然需要验证它是否为false。如果忽略错误检查,您的代码将不时随机失败。

当您在浏览器上打开xml url时,是否可以看到有效的xml?您知道API返回xml的事实吗?如果使用curl从命令行发送请求,会发生什么情况?是否确实从请求中获取XML文件?什么是
$response=curl\u exec($ch);echo htmlspecialchars($response)显示给你看?@hakkikonu我通过浏览器获得了正确的XML。@JimGarrison我想是的。使用curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);我只得到SimpleXMLElement对象(),在知道响应是否良好之前,不通过几层代码处理响应。从例如var_dump()开始。问题是curl只返回原始xml文件中的stings列表。缺少XML语法。您是否碰巧在HTML文档中显示了XML标记,然后通过浏览器查看所有呈现的内容?如果是这样,您必须使用“查看源代码”菜单项。太好了,谢谢!浏览器隐藏了xml。我可以通过echo htmlspecialchars(curl_exec($ch))看到它;但是$xml=$xml=simplexml\u load\u string(curl\u exec($ch))或die(“错误”);print\r($xml)仍然返回“ERROR”(需要开始标记,'
$sxe = simplexml_load_string($re);
print_r($sxe);
SimpleXMLElement Object ( )
$xml = new SimpleXMLElement(curl_exec($ch));//line 14