SAX- oder DOM-Parsing

Java bietet zwei Arten des Parsens om XML-Dokumenten, SAX und DOM. Es ist dem Programmierer überlassen, wofür er sich entscheidet. Es gilt Vor- und Nachteile abzuwägen, um ein Optimum zu erhalten. Wer noch nie ein XML-Dokument mit Java bearbeitet hat, wird Probleme bei dieser Entscheidung haben. Deshalb eine kleine Hilfestellung.

DOM-Parsing

Das gesamte Dokument wird als Baumstruktur gespeichert. Dieser Baum ist im RAM, weshalb jedes Element sehr schnell erreichbar ist. Die einzelnen Knoten (Nodes) bieten Zugang zu eigenen Methoden, die auf dieses Element angewendet werden. Der gesamte Aufbau und die Verwaltung der Dokumentenstruktur übernimmt DOM. Es brauchen also keine eigenen Methoden oder Strukturen erstellt werden.
Das Modell ist äußerst flexibel und geht sehr ins Detail. Diese Eigenschaft kann sich nachteilig auswirken. Sind sehr spezialisierte Dokumente zu bearbeiten, so oft ist die Speicherung eines Zeilenumbruchs oder Leerzeichen in separaten Nodes überflüssig. Weil hier überwiegend MathML-Dokumente bearbeitet werden, können eigene Strukturen und Methoden sehr viel effizienter sein.

SAX-Parsing

Das gesamte Dokument wird geparst, genau wie bei DOM. Allerdings wird kein Element gespeichert. Ob ein Element gespeichert wird und wo die Argumente von Tags untergebracht werden ist allein Sache des Programmierers.
Wenn also die Struktur der Dokumente sehr übersichtlich ist (bei MathML ist das der Fall) bietet sich eine eigene Speicherstruktur an. Ressourcen werden geschont und das System wird schneller.

Eigenes Bild machen

Auf dieser Site sind Programme vorhanden, die sowohl SAX- als auch DOM-Parsing benutzen. Die Verbindung von MathML und dem GPLmath-Pack erfolgt über SAX, denn die Strukturen des GPLmath-Packs sind am Inhalt orientiert und unterliegen damit den Strukturen der mathematischen Formeln. Eine Anpassung des DOM-Modells an diese Strukturen wäre sehr aufwändig.
Die Programme aus den Beispielen sind:
pasen1.java
pasen2.java
pasen3.java