-2

私はこれをabc.phpというファイルに持っています。これは、最後に-string-ラベルを表示して開始する代わりに、有効なxmlドキュメントを返します

header('Content-type: application/xml');
$xml = file_get_contents("http://www.xxx.asmx/test?id=1"); //External web service
$xmlstr = simplexml_load_string($xml);
echo $xmlstr;

abc.php の有効な xml データを使用し、特定のデータを抽出してデータベースに保存し、他のサーバーの出力を定期的にチェックしたいので、次のことを試しました。

ob_start();
include 'abc.php';
$result = ob_get_clean()

これと同様に:

$xml = file_get_contents("abc.php"); 
$xmlstr = simplexml_load_string($xml);

成功せずに、アドバイスはありますか?

4

3 に答える 3

0

file_get_contents("abc.php")ファイル「abc.php」の内容を返します。その PHP コードは実行されません。with output buffering トリックはおおむね正しいことを行うはずですが、なぜそのようにしたいのかわかりません。include

のコードにアクセスできる場合はabc.php、単純に PHP 関数にします。これにより、処理された XML が返されます。

function get_the_actual_xml()
{
    $xml = file_get_contents("http://www.xxx.asmx/test?id=1"); // External web service
    $xml_obj = simplexml_load_string($xml); // Load into SimpleXML object
    return (string)$xml_obj; // Convert contents back to a string
}

何らかの理由で 2 つの PHP ファイルを異なるサーバーに配置する必要がある場合は、ディスク上の場所だけでなく、へのURLを参照する必要があります。abc.phpそうすれば、PHP コードが実行され、返されるのはそのechoステートメントの結果です。サーバーallow_url_fopen設定が有効になっている場合、これは次のように簡単です$remotely_processed_content = file_get_contents('http://sanjosecostarica.org/test/abc.php')

于 2013-03-01T23:12:10.180 に答える
0

最後に、「abc.php」の結果を取得できず、コンテンツのみを取得できませんでした。別のアプローチを成功させました。

$xml = file_get_contents("http://www.xxx.asmx/test?id=1"); //External web service
$xmlstr = simplexml_load_string($xml);
$xmlok = <<<XML
$xmlstr
XML;

$xml = simplexml_load_string($xmlok);
于 2013-03-02T17:02:04.820 に答える
0

MIME タイプも必ず出力してください。そうしないと、サーバーが text/html を入力してしまい、すべてが間違ったものになります。この関数を入れて

header("Content-type: application/xml");

クライアントがそれを XML として認識するように、abc.php に追加します。

于 2013-03-01T18:21:12.830 に答える