2016-11-29 8 views
1

私は、クラウドベースのPOSから配信されているXML出力からWordPressを読み込むためのプラグインを開発しています。SimpleXMLはこの1つのURLを解析しません

これは複雑なプログラミングではありませんが、これはデバッグのほうです。

XMLのURLは次のとおりです。は削除:)

そして基本的な、シンプルなコードです:私はすべてのアプローチを試してみました <?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

ありがとう@サイモン、エラーで拡大するのを忘れました – 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>"; 
?> 
関連する問題