Closed luckyraul closed 8 years ago
Добрый!
Прошу прощения за задержку с ответом.
Полную поддержку XPath я не знаю как реализовать в связке c SAX. Сейчас работают только простые выражение, подобные структуре директорий, "/a/b[attr='val']/c/d" или по имени тега -- "группа".
Как идеи для вашего случая, три отделенных обработчика на: "/КоммерческаяИнформация/Классификатор/Группы/Группа", "Группы" и "Группа". И контролировать стек вложенности тегов -- что очень не тривиально.
Однако вопрос, стоит ли этого? Предположим что размер корневых групп -- "/КоммерческаяИнформация/Классификатор/Группы/Группа" небольшой и умещается в памяти. Тогда:
$this->registerCallback("/КоммерческаяИнформация/Классификатор/Группы/Группа", function($reader) {
$rootGroup = $reader->expandSimpleXml(); // тут и будет основное потребление памяти.
$subGroup = $rootGroup->xpath("/Группы");
// дальше рекурсивно бегать по группам
});
Большое спасибо, очень помогло.
Добрый день.
Не можете - нужно достать данные по каждой группе с учетом вложенности. 1) Жаль что не работают XPath запросы с рекурсией. вида
/КоммерческаяИнформация/Классификатор/Группы//Группа
Если делать callback по
Группа
и expand там - то не понятно, как вытащить информацию о родителе.