Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
какими средствами лучше разбирать объёмный XML
$json = curl_exec($ch);
if ($json !== false) {
//решаем проблему ошибок
$json = preg_replace("#(/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/)|([\s\t]//.*)|(^//.*)#", '', $json);
setlocale(LC_ALL, 'ru_RU.utf8');
Header("Content-Type: text/html;charset=UTF-8");
curl_close($ch);
$json = json_decode($json, true) ;
В java как-то помнится тупо использовал gson.
[{}, {}, {}, ...] или похожий, где структура несложная, но есть большой кусок, который надо обрабатывать потоком, можно сделать так. Читаем посимвольно с учетом вложенности скобок, то есть определяем ситуации «начало массива», «конец массива», «начало объекта», «конец объекта». Задаем уровень вложенности или ключ, которые определяют одну единицу данных. Читаем текст для этой единицы в буфер, буфер передаем в json_decode(). Делаем обработку результата, читаем дальше.Помимо времени выполнения следовало бы замерить использованную память.
А завтра поменяют разбиение XML-файла на строки и все у вас упадет.
А как вы будете разбивать файл вот такого формата?
<root><item>
<name>Item 1</name>
</item><item>
<name>Item 2</name>
</item><item>
<name>Item 3</name>
</item><item>
<name>Item 4</name>
</item><item>
<name>Item 5</name>
</item></root>А завтра поменяют разбиение XML-файла на строки и все у вас упадет.
Методы работы с «тяжёлыми» XML