Ссылка на усеченную версию примера документа
Я пытаюсь извлечь большой кусок текста в последнем «pre», обработать его и вывести.В целях аргументации, скажем, я хочу применить
concatMap (unwords . take 62 . drop 11) . lines
к тексту и вывести его.
Это занимает более 400 МБ в документе HTML размером 4 МБ, когда я это делаю.
Код, который у меня есть, довольно прост, поэтому я не включаю его из-за боязни смещения ответов.
Вот одна итерация кода:
file = readDocument [(a_validate, v_0), (a_parse_html, v_1)] "Cache entry information.xhtml"
text = fmap last $ runX $
file >>>
deep (hasName "pre") />
isText >>>
-- changeText (unwords . take 62 . drop 11 . lines) >>>
getText
Я думаю, что проблема в том, что, как я это делаю, HXT пытается сохранить весь текст в памяти при его чтении.
Согласно это кажется, чтоHXT нужно как минимум прочитать весь документ, но не хранить его в памяти.
Я собираюсь попробовать другие парсеры, HaXmL, следующий.
NB Я решил исходную проблемуобрабатывая входной файл как простой текст и желаемую часть, разделенную "<pre>00000000:"
и "</pre></body>\n</html>"