Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> глюки xml_parse, режет содержимое 
:(
    Опции темы
comcon1
Дата 13.5.2009, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 11.6.2005
Где: Москва ДАС-МГУ

Репутация: нет
Всего: 17



Доброй ночи, винград. Столкнулся с довольно странной проблеммой. Есть файл 5-50 мегабайт, парсю его xml_parser-ом. Все как в мануалах:

Код

<?php
        while ($data = fread($fp, 4096)) {
            if (!xml_parse($parser, $data, feof($fp))) {
                printf("XML error: %s at line %d while parsing entity %s\n",
                       xml_error_string(xml_get_error_code($parser)),
                       xml_get_current_line_number($parser), $openEntityNames);
                xml_parser_free($parser);
                return false;
            }
        }
?>


Парсится дамп базы данных, то есть много одинаковых макротэгов "record" со схожей внутренней структурой.
Парсинг идет блоками по 4096 символов. Все парсит хорошо, но я заметил, что некоторое содержимое тэгов (то есть не аттрибуты, а "<тэг>содержимое</тэг>") режется. Причем мало того что режется, функция конца тэга endElementHandler периодически срабатывает дважды на одну запись. Первый раз выдает половину содержимого, второй раз все. Изменяю число 4096 на 8000 - все нормально. Для моей задачи я могу ограничиться выставлением числа символов в максимальную длину двух записей БД, это не очень много, и парсер будет работать нормуль. Но все же:

Первый вопрос: лечится ли это вообще?
Второй вопрос: пользуются ли нормальные люди xml_parsers, или это пережитки динозавров?


--------------------
PM MAIL   Вверх
Kallisto
Дата 3.9.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 20.4.2007

Репутация: -1
Всего: -1



fgets ?
PM MAIL   Вверх
IZ@TOP
Дата 3.9.2009, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 2
Всего: 73



comcon1, я настоятельно рекомендую SAX парсер XMLReader.

Добавлено через 1 минуту и 2 секунды
Kallisto, я уже предупреждал про минус? fgets не имеет никакого отношения к парсингу XML и данной теме.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: X технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0603 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.