Проект Nux включает класс StreamingPathFilter . С этим классом вы можете объединить средства потоковой передачи и малый объем памяти SAX с простотой использования DOM.
Но это работает, только если ваш XML-документ имеет структуру, похожую на запись. Например. много элементов <person/>
.
(Следующие примеры взяты с сайта Nux и изменены мной)
Сначала вы определите, как обрабатывать одну запись:
StreamingTransform myTransform = new StreamingTransform() {
public Nodes transform(Element person) {
// Process person element, i.e. store it in a database
return new Nodes(); // mark element as subject to garbage collection
}
};
Затем вы создаете StreamingPathFilter
, передающий выражение XPath, которое соответствует вашим узлам записи.
// parse document with a filtering Builder
NodeFactory factory = new StreamingPathFilter("/persons/person", null).
createNodeFactory(null, myTransform);
new Builder(factory).build(new File("/tmp/persons.xml"));
Библиотека Nux больше не поддерживается. Но это все еще полезно.