… dann stößt man mit dem in meinem letzten Eintrag vorgestellten Verfahren XML zu verarbeiten schnell an die Grenzen des Speichers. Scala bietet aber auch eine StAX-ähnliche XML Pull API, die im Folgenden näher vorgestellt wird.
Vorneweg etwas zu “Push” und “Pull”
Im Gegensatz zum XMLLoader (der DOM-ähnlichen Variante, die ich in meinem letzten Artikel zu Scala und XML vorgestellt habe), wird bei ”Pull”- bzw. “Push”-Variante nicht das komplette XML in den Speicher geladen. Es wird einzeln über jedes Element im XML iteriert und für jedes Element ein Event generiert, auf das der verarbeitende Code reagieren kann. ”Push” und “Pull” unterscheiden sich darin, ob die Kontrolle während des Parsens eines Dokuments beim Parser oder beim verarbeitenden Programm liegt. Ein “Push”-Parser übernimmt die Kontrolle während des Parsens, indem er das Dokument durchläuft und für jedes enthaltene Element eine Handler-Methode beim verarbeitenden Programm aufruft (SAX in Java). Ein “Pull”-Parser hingegen bietet einen Iterator an, mit dem das verarbeitende Programm entscheiden kann, wann es das nächste Element auslesen möchte (StAX in Java). Somit ist es dem Programm auch möglich das Parsen vorzeitig zu beenden, ohne das komplette XML eingelesen zu haben.
Weiterlesen..