Обычно, когда мы говорим о постоянстве, мы говорим о записи его на диск или другой носитель. Там есть снижение производительности, и вам нужно подумать о проблемах дискового пространства. Возможно, вы захотите взвесить это в сравнении со стоимостью наличия этого XML на длительный срок.
Если вы просто говорите о том, чтобы держать его в памяти (что звучит как то, что вы спрашиваете), то вы можете выделить байтовый массив и прочитать все это в байтовом массиве. Вы можете использовать ByteArrayInputStream для чтения и перечитывания этого потока.
Стоимость с этим в два раза. Во-первых, вы держите копию в памяти, и вам необходимо сопоставить ее с требованиями масштабируемости. Во-вторых, синтаксический анализ XML стоит довольно дорого, поэтому лучше разбирать его только один раз, если это возможно, и сохранять результат в объекте.
Edit:
Чтобы выделить и прочитать байтовый массив, вы часто (но не всегда) можете полагаться на метод InputStream available (), чтобы сообщить вам, сколько выделить. и оберните InputStream с DataInputStream, чтобы вы могли вызвать readFully (), чтобы засосать все это в байтовый массив одним вызовом.
Редактировать снова:
Прочитайте комментарий Стин ниже. Он прав, что в этом случае использовать available () - плохая идея.