Parsowanie XMLa przez SAX vs. HappyMapper

Howgh,

mam importer XMLi napisany z użyciem HappyMappera. Problem polega na tym, że wykłada się przy nakarmieniu 900MB plikiem XML, który właśnie dostaliśmy od jednego klienta. Chciałbym więc przełączyć parsowanie XMLa z trybu DOM na tryb SAX. Pytanie brzmi czy HappyMapper to wspiera oraz jakich ekstra zabiegów to wymaga?

Interesuje cię HappyMapper::ClassMethods.parse

Niestety zła wiadomość wygląda na to że parser polega na XPath które niestety niezbyt banglają z SAXem, w ogóle to trochę dziwnie że używane są XPath zamiat DOM ale co kraj to obyczaj. Dobra wiadomość jest natomiast taka że nadpisanie tej metody powinno wystarczyć, kod jest bardzo czytelny i ma małą objetość więc nie sądzę żeby problemem było dostosowanie go do przetwarzania ciągłego z użyciem SAX, jedyne na co bym uważał to żeby upewnić się że obiekty są zwalniane poprawnie po ich przetworzeniu bo inaczej nie będzie wielkiej różnicy od załadowania od razu całego XMLa.

No właśnie, w miare czytania kodu HappyMappera perspektywa jego przeportowania na SAXowy parser wydawała się coraz bardziej niedorzeczna.

Obszedłem ten problem trochę inaczej: ponieważ XML jest dość płaski, dzielę go na n plików po 10000 wpisów. Każdy taki plik zajmuje kilkanaście MB i jest spokojnie łykany przez importera.

Ja zrobiłem podobnie. U mnie HappyMapper wymiękał już na XMLu 50MB, ale parę zmian w jego kodzie i zamiast parsować całość to dostawałem obiekty w paczkach po 10000. Z tym, że pewnie tak samo jak w Twoim przypadku, mam XMLa z kolejnymi elementami tego samego typu zaraz pod rootem.