Переписать для XMLReader с SimpleXML

196
09 мая 2019, 21:00

есть XML файл index.xml (~50mb)

<?xml version="1.0" encoding="UTF-8"?>
  <yml_catalog date="2017-02-05 17:22">
   <shop>
     <gifts>
      ...
     </gifts>
     <offers>
       <value>1</value>
       <name>...</name>
     </offers>
     <offers>
       <value>0</value>
       <name>...</name>
     </offers>
     <offers>
       <value>1</value>
       <name>...</name>
     </offers>
     <offers>
       <value>0</value>
       <name>...</name>
     </offers>
    </shop>
  </yml_catalog>

c помощью simplexml

$xml = simplexml_load_file("all.xml");
$results = $xml->xpath('/yml_catalog/shop/offers/offer');
foreach ($results as $offer) {
    if($offer->value== '0') { 
        $node = dom_import_simplexml($offer);
        $node->parentNode->removeChild($node);
    }
}
$results2 = $xml->xpath('/yml_catalog/shop/offers/offer/value');
foreach ($results2 as $offer2) {
        $node2 = dom_import_simplexml($offer2);
        $node2->parentNode->removeChild($node2);
}
echo $xml->asXML('value1.xml');

получаю такой вид

<?xml version="1.0" encoding="UTF-8"?>
  <yml_catalog date="2017-02-05 17:22">
   <shop>
     <gifts>
      ...
     </gifts>
     <offers>
       <value>1</value>
       <name>...</name>
     </offers>
     <offers>
       <value>1</value>
       <name>...</name>
     </offers>
    </shop>
  </yml_catalog>

но из-за большого файла выводит ошибку памяти. Как переписать все тот же принцып для XMLReader ? В нем не понимаю..

READ ALSO
pg_fetch_all для несуществующих записей

pg_fetch_all для несуществующих записей

Сейчас при запросе к базе данных использую функцию pg_fetch_all для сбора всех данныхНо проблема в том, что если я сделаю запрос по значению, которого...

194
Lua в PHP | Переменные

Lua в PHP | Переменные

Как сделать что-то подобное в PHP?:

218
Как изменить ответ REST в yii2

Как изменить ответ REST в yii2

Как можно изменить ответ после того как отправил запросК примеру POST, на добавление записи

217