2016-11-29 3 views
1

Я разрабатываю плагин для WordPress для чтения с XML-вывода, который поставляется с облачной POS-системы.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

Сервер требует агента пользователя, который нужно установить. Все стандартные XML-API в PHP основаны на 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

СПАСИБО! Хотя ваш ответ не был прямым, он указал мне на поиск корректировки пользовательского набора, который приведет меня к этому: 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>"; 
?>