denik
Постоялец
- Регистрация
- 1 Июл 2011
- Сообщения
- 80
- Реакции
- 40
- Автор темы
- #1
Добрый день.
Пишу парсер больших XLSX-файлов. Как всем известно, xlsx - это ZIP архив с xml файлами данных.
В общем требования - экономить память.
Открываю XML-файлы через поток "zip://" так:
все это большой проект, по этому привожу только самое важное.
Основной вопрос: как можно организовать итерацию по объекту XML БЕЗ foreach?
Т.е. есть решение такое:
Но мне необходимо нечто вроде rewind(); current(); next();
Есть у PHP класс Для просмотра ссылки Войдиили Зарегистрируйся, однако как его связать с simplexml_load_file (экономя память) никак не могу понять.
Подскажите...
Пишу парсер больших XLSX-файлов. Как всем известно, xlsx - это ZIP архив с xml файлами данных.
В общем требования - экономить память.
Открываю XML-файлы через поток "zip://" так:
PHP:
// Открываем основной WorkSheet #1
$this->_XML = simplexml_load_file("zip://$file#xl/worksheets/sheet1.xml");
Основной вопрос: как можно организовать итерацию по объекту XML БЕЗ foreach?
Т.е. есть решение такое:
PHP:
foreach ($this->_XML->sheetData->row as $item) {
$out[$row] = array();
//по каждой ячейке строки
$cell = 0;
foreach ($item as $child) {
$attr = $child->attributes();
$value = isset($child->v)? (string)$child->v:false;
$out[$row][$cell] = isset($attr['t']) ? $this->_XML_str[$value] : $value;
$cell++;
}
$row++;
}
Есть у PHP класс Для просмотра ссылки Войди
Подскажите...