У меня есть XML-файл, который мне бы не пришлось загружать полностью в память. Как всем известно, для такого файла мне лучше использовать синтаксический анализатор SAX (который будет работать с файлом и вызывать события, если что-то релевантное будет найдено.)
Моя текущая проблема в том, что я хотел бы обработать файл " по куску ", что означает:
В идеальном мире я ищу что-то вроде этого:
// 1. Create a parser and set the file to load
IdealParser p = new IdealParser("BigFile.xml");
// 2. Set an XPath to define the interesting nodes
p.setRelevantNodesPath("/path/to/relevant/nodes");
// 3. Add a handler to callback the right method once a node is found
p.setHandler(new Handler(){
// 4. The method callback by the parser when a relevant node is found
void aNodeIsFound(saxNode aNode)
{
// 5. Inflate the current node i.e. load it (and all its content) in memory
DomNode d = aNode.expand();
// 6. Do something with the inflated node (method to be defined somewhere)
doThingWithNode(d);
}
});
// 7. Start the parser
p.start();
Я сейчас застрял на том, как развернуть a "саксофонный узел" (поймите меня ...) качественно.
Есть ли какая-либо инфраструктура или библиотека Java, имеющая отношение к такого рода задачам?