-1

PHPを使用して抽出しているxmlフィードがあり、必要な値を見つけてページに正しく表示するためのコードが書かれています。

XML コードは次のとおりです。

<Agents>
   <Agent>
      <id></id>
      <description></description>
      <name></name>
   </Agent>
</Agents>

PHPコード

<?php
$url  = "urlgoeshere";
$xml  = simplexml_load_file($url);

for ($html = "", $i = 0; $i < 10; $i++)
{
    $id          = $xml->Agent[$i]->id;
    $name        = $xml->Agent[$i]->name;
    $description = $xml->Agent[$i]->description;

    $html .= "<h1>$id</h1><h2>$name</h2><p>$description</p>";
}

echo $html;

これは正常に動作する 11 個のエージェントをロードするように設定されていますが、これを変更して、ID に基づいて特定のエージェントを 1 つだけロードしたいと考えています。

たとえば、エージェントの xml フィールドの ID が 1200 の場合、それを見つけて、その 1 つのエージェントだけをロードしたいのですが、これを行う簡単な方法が見つからないようです。

4

2 に答える 2

0

2 つのオプションがあります。クライアント側 (コード内) でフィルタリングするか、サーバー側でフィルタリングします。

サーバ側

RESTfull サービスなどから XML ファイルをリクエストする場合、パラメータをリクエストに直接渡したい場合があります。リクエストする代わりに、リクエストなどexample.com/agents.xmlを行うことができますexample.com/agents/1.xml。その場合、XML ファイルを要求する API を確認する必要があります。このタイプのフィルタリングの長所は、データとトラフィックが少ない小さな xml ファイルをロードする必要があることです。

クライアント側

サーバー側でデータをフィルタリングできない場合は、PHP コードで確認する必要があります。最も簡単なオプションはif、ループにステートメントを追加することです。また、1200 人のエージェントについて話しているので、これが最も簡単かもしれません。より多くのエントリをロードする必要がある場合、またはアプリケーションに速度と効率が必要な場合は、別の XML パーサーを使用することをお勧めします。SimpleXML クラスは、ファイル全体を CPU にロードします。XML リーダーを使用して XML ファイルを解析するための比較的効率的な方法を作成しました。この方法は、より効率的で必要なメモリが少なくて済みます。ニーズに合わせて例を自由に編集してください。

于 2013-06-18T09:06:11.317 に答える