Ну, на самом деле вы не обрабатываете XML страницей, однако если вы расширяете XMLFilterImpl вместо использования DefaultElementHandler (что бы это ни было), вы можете просто обрабатывать элементы XML по мере их поступления. Вы будете осуществлять потоковую передачу, поэтому не будет никакого случая, когда весь документ находится в памяти (на практике).
По сути, вас вызовут для элемента события, в начале элемента, для атрибутов, для текста внутри, а затем в конце элемента (посмотрите на методы в интерфейсе ContentHandler). Основываясь на этих вызовах, вы выполняете свою обработку (вам, вероятно, потребуются некоторые структуры данных, в которых вы накапливаете элементы внутри элемента "page". Также обратите внимание, что нет гарантии, что вы получите только один вызов для текста (это до парсера).
Помогает ли это сделать это более понятным?