0

我正在尝试读取 Symfony 项目中的 XML 文件,以将数据发送到前端。

由于 XML 文件很大,我正在使用 XMLReader 和 SimpleXML 的组合(如此线程中所建议:如何在 PHP 中使用 XMLReader?)。

这是我的 XML 阅读器代码:

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;
}

我的目标是一点一点地发送数据,因为它们将显示在带有分页的表格中。也就是说第一次发送20个结果,然后当我们点击第2页时,它会请求接下来的20个结果。

有没有办法做到这一点?

4

1 回答 1

1

在 Symfony 中,您可以使用StreamedResponse. 它通常用于发送大文件,因为它不需要将整个文件加载到内存中,但它也应该满足您的需求。

查看它在文档中的使用方式:http: //symfony.com/doc/current/components/http_foundation.html#streaming-a-response

于 2016-10-12T12:24:02.870 回答