7

本当に基本的で明らかな何かが欠けているのではないかと思うので、あらかじめお詫びします!

を使用simple_xml_loadして XML ファイルを操作していましたが、クライアントのホスティング プロバイダーがこの方法による外部ファイルの読み込みをブロックしています。wp_remote_get現在、 WordPress に組み込まれている機能を使用して作品を再構築しようとしています。

これが私のコードです(注:この例では、キーと避難所IDは一般的です):

$url = "http://api.petfinder.com/shelter.getPets?key=1234&count=20&id=abcd&status=A&output=full";
$pf_xml = wp_remote_get( $url );
$xml = wp_remote_retrieve_body($pf_xml);

これを使用して、必要なすべてのデータの配列を取得できますが、特定のデータを対象にする方法がわかりません。からの出力は次のprint_r($xml)とおりです。

<petfinder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://api.petfinder.com/schemas/0.9/petfinder.xsd">
    <header>
        <version>0.1</version>
        <timestamp>2013-03-09T15:03:46Z</timestamp>
        <status>
        <code>100</code>
        <message/>
        </status>
    </header>
    <lastOffset>5</lastOffset>
    <pets>
        <pet>
            <id>13019537</id>
            <name>Jordy</name>
            <animal>Dog</animal>
        </pet>
        <pet>
            <id>13019888</id>
            <name>Tom</name>
            <animal>Dog</animal>
        </pet>
    </pets>
</petfinder>

たとえばecho、ステータス コードが必要な場合は、どうすればよいでしょうか。simplexml を使用して、次のように記述し$xml->header->status->codeます。を使用して配列で同様のことを行うためのコード構造が何であるかを理解できないようですwp_remote_get

前もって感謝します!

4

1 に答える 1

7

これまでのコードは、XML を文字列として取得します。

$url      = "http://api.petfinder.com/shelter.getPets?key=1234&count=20&id=abcd&status=A&output=full";
$response = wp_remote_get($url);
$body     = wp_remote_retrieve_body($response);

SimpleXMLElement以前に行ったように (URL の代わりに) 文字列を にロードするにはsimplexml_load_file(具体的なコードを表示していないので、説明に基づいてこのようにしたと思います)、simplexml_load_string代わりに次のように文字列をロードする必要があります。

$xml  = simplexml_load_string($body);
$code = $xml->header->status->code;

変数名 (特に関数) を少し変更して、wp_remote_*それらの変数が何を運ぶかをより明確にしました。

于 2013-03-10T10:15:42.410 に答える