私はSymfonyプロジェクトでXMLファイルを読み込み、フロントエンドにデータを送信しようとしています。PHPでXMLファイルを処理してデータを少しずつ送信する
XMLファイルが巨大なので、XMLReaderとSimpleXMLの組み合わせを使用しています(How to use XMLReader in PHP?)。それらは改ページとテーブルに表示されるように
class XMLReader {
private $xmlFile;
private $reader;
public function __construct($xmlFile = null)
{
$this->xmlFile = $xmlFile;
}
public function initReader()
{
$this->reader = new \XMLReader();
$this->reader->open($this->xmlFile);
}
public function getData()
{
$products = array();
$index = 0;
while ($this->reader->read()) {
while ($this->reader->name === 'product') {
$node = new \SimpleXMLElement($this->reader->readOuterXML());
array_push($products, $node);
$index++;
if ($index < 20)
$this->reader->next();
else
break 2;
}
}
return $products;
}
私の目的は、少しずつデータを送信することです:
は、ここでXMLリーダーのための私のコードです。つまり、初めて20個の結果が送信され、2番目のページをクリックすると次の20個の結果が要求されます。
これを行う方法はありますか?
そうでもないような良いアイデア、それは基本的にあなたがテーブルにXMLファイル_eachのtime_を新しいページを解析する必要があることを意味するから要求されています。代わりに、ファイル全体を処理して転送し、クライアントサイドロジックをページング(JavaScript)に使用することができます。これは簡単ではるかに魅力的ですが、妥当な量のデータまでしか機能しません。それがオプションでない場合は、xmlファイルをデータベースに解析し、そこからページ付けされたデータを配信する必要があります。 – arkascha
arkaschaには、javascriptでXMLを解析し、xpathクエリを使用してページを取得する必要があるノードを選択できるという点があります。 –