0

次のxml構造からループして情報を表示しようとしています。

<users_list>
  −&lt;users type="array">
    +<user>
      <id>Blah</id>
    </user>
    +<user></user>
    +<user></user>
  </users>
  <next_link>6</next_link>
  <prev_link>4</prev_link>
</users_list>

次の PHP を使用してノードを取得します。

        $xml = simplexml_load_string($rawxml);
        foreach($xml->users_list AS $key){
            $name = $key->users->user->{"id"};
        }
            $next = $key->{"next_link"};
            $prev = $key->{"prev_link"};

いくつかのバリエーションを試しましたが、効果は見られません。変数をエコーし​​ても何も得られないか、foreach関数で無効な引数が得られます

4

3 に答える 3

2

var_dumpPHPでトラブルシューティングを行うときprint_rは、あなたの味方です!

結果を配列のようにブラウズしたい場合は、それを配列にキャストします。

$value = (array) $value;

私は次のことをしました:

$xmlStr = '<users_list>
<users type="array">
<user>
<id>Blah</id>
</user>
<user></user>
<user></user>
</users>
<next_link>6</next_link>
<prev_link>4</prev_link>
</users_list>';

$xml = simplexml_load_string($xmlStr); 

foreach($xml->users->user AS $key=>$value){
    $value = (array) $value;
    $name = $value["id"];
    var_dump($name);
}   

出力は次のとおりです。

string(4) "Blah"
NULL
NULL

simplexml の詳細については、PHP ヘルプ ドキュメントを確認してください。

于 2009-11-07T14:27:36.850 に答える
2

SimpleXML を使用する場合は、変数に含まれるルート ノードに基づいて変数に名前を付ける必要があります。これにより、物事がより単純かつ明確になります。

$users_list = simplexml_load_string(
    '<users_list>
      <users type="array">
        <user>
          <id>Blah</id>
        </user>
        <user></user>
        <user></user>
      </users>
      <next_link>6</next_link>
      <prev_link>4</prev_link>
    </users_list>'
);

foreach ($users_list->users->user as $user)
{
    echo "User ", $user->id, "\n";
}

echo "next: ", $users_list->next_link, "\n";
echo "prev: ", $users_list->prev_link, "\n";
于 2009-11-07T19:40:06.983 に答える