Очень быстрый анализатор (php) для огромных xml-каналов

#php #xml #parsing #xml-parsing #simplepie

#php #xml #синтаксический анализ #xml-синтаксический анализ #simplepie

Вопрос:

Мне нужна очень быстрая реализация синтаксического анализа php для анализа огромных xml-потоков «на лету», было бы очень важно, чтобы анализатор начинал синтаксический анализ при поступлении данных, а не только при загрузке всего канала. Я попробовал simplepie, но все еще ищу что-то более быстрое! Есть предложения?

Ответ №1:

С помощью PHP XML parser вы можете разбирать фрагмент за фрагментом: http://php.net/manual/en/function.xml-parse.php

Таким образом, вы можете загружать XML-файл построчно и отправлять его в свой анализатор XML. Без каких-либо сопутствующих рамок я ожидаю, что это будет самым быстрым.

Я не уверен, что произойдет, если вы загрузите XML напрямую по http: // … , если возможно прочитать содержимое до загрузки всего файла.

Комментарии:

1. Выглядит тоже неплохо. может быть, даже лучше? Я никогда им не пользовался. API выглядит более удобным, чем анализатор XML. XmlReader останавливается на каждом узле. С помощью анализатора XML вы можете определить всего несколько элементов, которые хотите прервать. Таким образом, XmlReader, возможно, проще, а XML-анализатор более «хардкорный» и поэтому, возможно, быстрее.

2. на мой взгляд, скорость и объем памяти определенно улучшили бы простоту, стоили бы усилий по написанию кода. Так вы думаете, что анализатор xml больше подходит этим критериям, чем xmlreader? мне нужно проанализировать весь канал (означает, что каждый элемент будет равен 300 для каждого канала, что умножается на 13-15 каналов)

3. Честно говоря, сейчас я этого не делаю. Анализатор XML работает более непосредственно со строками. С XmlReader я не уверен, загружают ли они сначала весь документ или большие части. SAX и XML Parser — это одно и то же, я полагаю?