(Все должно быть написано на Java)
Мне нужно создать приложение, которое будет принимать в качестве входных XML-документов, которые, возможно, очень большие. Документ зашифрован - не с XMLsec, а с моим предыдущим алгоритмом шифрования клиента - будет обрабатываться в три этапа:
Сначала поток будет дешифрован в соответствии с вышеупомянутым алгоритмом.
Во-вторых, класс расширения (написанный третьей стороной API, который я предоставляю) будет читать часть файла. Прочитанная сумма не предсказуема - в частности, она не гарантируется в заголовке файла, но может произойти в любой точке XML.
Наконец, еще один класс расширения (то же самое) подразделяет входной XML в подмножество документов 1..n. Возможно, что в какой-то части они частично перекрывают часть документа, обрабатываемого второй операцией, т.е. Я считаю, что мне нужно будет перемотать все механизмы, которые я использую для работы с этим объектом.
Вот мой вопрос:
Есть ли способ сделать это, не заново прочитав всю часть данных в памяти? Очевидно, что я могу реализовать дешифрование как фильтр входного потока, но я не уверен, что можно анализировать XML так, как я описываю; по ходу, так как большая часть документа требуется для сбора информации второго шага, а затем путем перемотки документа и передачи его снова, чтобы разделить его на задания, идеально высвобождая все части документа, которые больше не используются после они прошли.