Не могу прочитать большой XML-файл из PHP - PullRequest
2 голосов
/ 31 января 2012

У меня огромный XML-файл (114 КБ / 1719 строк; см. Сообщение об ошибке ниже, почему я говорю огромный ), и я пытаюсь прочитать его, как я делал с двумя аналогичными файлами ранее.

Два других файла загружаются нормально и имеют сравнимый размер, с той лишь разницей, что данный файл содержит арабский текст.Итак, вот код PHP:

$doc3 = new DOMDocument('1.0', 'utf-8');
$doc3->load($masternumber.'.xml');

И ошибка:

Предупреждение: DOMDocument :: load () [domdocument.load]: Чрезмерная глубина в документе: 256используйте опцию XML_PARSE_HUGE в файле: ...

Тогда $doc3 не загружает файл.Поэтому я изменил код:

$doc3->load($masternumber.'.xml', "LIBXML_PARSEHUGE");

И в итоге я получил еще одно предупреждение:

Предупреждение: DOMDocument :: load () ожидает, что параметр 2 будет длинным, задана строкаin ...

$doc3 снова пусто.

Что с ним не так?Другие файлы содержат такой же текст на других языках и загружаются правильно, но не этот?Я использую PHP 5.3.9.

1 Ответ

7 голосов
/ 31 января 2012

Используйте константу, а не строку.

$doc3->load($masternumber.'.xml', LIBXML_PARSEHUGE);

Более подробную информацию см. В документации DOMDocument::load().Второй параметр - это длинное целое число, представляющее выбранные параметры из списка констант .

Кстати, если по какой-либо причине вам нужно несколько параметров, это делается путем их объединения с побитовым ИЛИоператор |

// Multiple options  OR'd together...
// Just FYI, not specific to your situation...
$doc3->load($masternumber.'.xml', LIBXML_PARSEHUGE|LIBXML_NSCLEAN);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...