Потоковая передача содержимого узла XML с помощью Axiom

У меня есть InputStream, который содержит XML, содержащий экранированный XML-контент. Размер Escaped XML может достигать сотен мегабайт, поэтому его необходимо обрабатывать как отдельный XML-документ, чтобы OMElement Apache Axiom не загрузил все содержимое в память.

Можно ли с помощью Axiom передать содержимое узла в потоковом режиме и разобрать его как отдельный документ?


person 137    schedule 22.11.2016    source источник


Ответы (1)


Правильный способ сделать это в Axiom — вызвать getTextAsStreamcache, установленным в false) для OMElement, который упаковывает экранированный XML, а затем проанализировать возвращенный Reader как XML. Обратите внимание, что это работает, только если вы укажете Axiom отключить объединение в базовом синтаксическом анализаторе XML, как описано здесь; если вы этого не сделаете, то весь контент все равно будет загружен в память.

person Andreas Veithen    schedule 24.11.2016
comment
Я увидел это только сейчас, так как был с семьей на долгих выходных. Я попробую и просмотрю ваш ответ / отредактирую свой вопрос, как только вернусь с некоторыми результатами. Большое спасибо Андреас! - person 137; 28.11.2016
comment
Спасибо @Andreas-Veithen, это было именно то, что мне было нужно. - person 137; 30.11.2016