Я чувствую себя не в своей тарелке, задавая этот вопрос, поскольку, несмотря на чтение официальных документов и ресурсов, связанных с этими вопросами :
, Как понять `Iteratee `в play2?
Не могу понять Iteratee, Enumerator, Enumeratee в Play 2.0
... Я все еще довольно туманно отношусь к итерациям, перечислителям и реактивной модели Play 2.0 в целом. Но в любом случае, я хотел бы настроить веб-сервис, который позволит мне загружать большие файлы XML (>100 МБ ), выбирать определенные определенные (не -чередующиеся )NodeSeq, обрабатывать их, и передать результаты обратно клиенту.
Я полагаю, что первое, что мне нужно сделать, это написать BodyParser, который берет фрагменты байтов, передает их анализатору XML и выдает поток NodeSeqs, которые я хочу, скажем
, в ленивой манере.
Может ли кто-нибудь предложить какие-либо рекомендации и/или примеры, иллюстрирующие, как это можно сделать?
Обновление :Больше фона:-
Мой XML на самом деле является документом Solr add
, поэтому он выглядит как:
Some Entity
Blah blah...
...
...
Я хочу обрабатывать каждый
в потоковом режиме, поэтому моему синтаксическому анализатору, очевидно, придется ждать, пока он не достигнет начального события
,буферизовать все до эквивалентного события завершения и выдать NodeSeq завершенного элемента, а затем очистить его буфер.
Как это будет работать с Play BodyParser, я не совсем уверен. Больше обновлений, если я смогу уточнить, что я хочу сделать!
Хотя весь XML-файл большой, каждый элемент
сам по себе довольно мал, хотя мне, очевидно, пришлось бы проверять, не превышает ли байтовый буфер определенный размер.