Кто-нибудь знает, можно ли использовать XMLSlurper таким образом, чтобы отдельные поддеревья можно было извлекать из очень большого XML-документа и обрабатывать по отдельности?
Представьте, что у вас есть огромный XML-канал, содержащий корневой элемент с тысячами прямых дочерних элементов, которые вы можете обрабатывать по отдельности. Очевидно, что чтение всего документа в память недопустимо, но, поскольку каждый дочерний элемент корня сам по себе имеет скромный размер, было бы неплохо выполнить потоковую передачу по документу, но применять корректность XMLSlurper к каждому из дочерних элементов по очереди. По мере обработки каждого дочернего элемента сборка мусора может очистить память, используемую для его обработки. Таким образом, мы получаем большую простоту XMLSlurper (такой краткий синтаксис) с низким объемом памяти, занимаемой потоковой передачей (например, SAX).
Мне было бы интересно узнать, есть ли у кого-нибудь идеи по этому поводу и/или сталкивались ли вы сами с этим требованием.