Wednesday, 12 October 2016

XML : Processing XML file in PHP and send data little by little

I am trying to read an XML file in a Symfony project, to send the data to the front end.

As the XML file is huge, I am using a combination of XMLReader and SimpleXML (as suggested in this thread: How to use XMLReader in PHP?).

Here is my code for the XML Reader:

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

My aim is to send the data little by little, as they will be displayed in a table with pagination. Which means the first time, it will send 20 results, and then when we click page 2, it will request the next 20 results.

Is there a way to do that?

No comments:

Post a Comment