2016-11-29 53 views
1

我正在開發一個WordPress插件,用於從基於雲端POS的XML輸出中讀取數據。SimpleXML不會解析這一個URL

這不是複雜的編程,這更多的是調試。

的XML網址是:刪除:)

和基礎,簡單的代碼是: <?php error_reporting(E_ALL); ini_set('display_errors', true); $url = '--URL to the XM--L'; $xml=simplexml_load_file($url); print_r($xml); ?>

我已經嘗試了所有的辦法。 DOMDoc,CURL和SimpleXML。一切都吐出錯誤。編寫輸出的編碼人員已經能夠在其領域內工作,但我需要進行更多調試才能找出錯誤發生的位置。

根據我如何將XML提供給腳本,我遇到了一系列相當多的錯誤。

Fatal error: Uncaught Exception: String could not be parsed as XML in /var/www/html/test2.php:27 Stack trace: #0 /var/www/html/test2.php(27): SimpleXMLElement->__construct('http://jewelbas...', NULL, true) #1 {main} thrown in /var/www/html/test2.php on line 27

有時我得到這些奇怪的支持錯誤,我認爲從他們的主人來了,但他們不能識別它們。無論使用什麼服務器,都會出現這些支持錯誤。他們使用simplexml_load_string()

Warning: simplexml_load_string(): act the webmaster. <br><br>Your support ID is: 9641638103684613562</body></html>

+0

有助於瞭解代碼給出的錯誤。 – simon

+0

謝謝@simon,忘記擴大錯誤 – Rick

回答

0

服務器需要設置一個用戶代理時來。 PHP中的所有標準XML API都基於libxml。您可以設置一個流上下文爲它:

libxml_set_streams_context(
    stream_context_create(
    [ 
     'http' => [ 
     'header'=> 
      "User-Agent: Foo\r\n" 
     ] 
    ] 
) 
); 

$document = new DOMDocument(); 
$document->load($url); 
echo $document->saveXML(); 
+0

謝謝!雖然你的答案不是直接的,但它指向我搜索關於調整useraget,這導致我這樣:http://stackoverflow.com/questions/14844919/xml-feed-valid-http-header-user-agent – Rick

0

正是如此它在這裏爲後人看,這裏現在是解析在一個不錯的格式XML的完整代碼。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', true); 
$url = 'http://sample.com/yourphpxmlfile.php?variables=rule'; 
$feed = $url; 
$options = array(
'http' => array(
'method' => "GET", 
'header' => "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17\r\n" // Chrome v24 
) 
); 
$context = stream_context_create($options); 
$content = new SimpleXMLElement(file_get_contents($feed, false, $context)); 
echo "<pre>"; 
print_r($content); 
echo "</pre>"; 
?>