Download PHP - Endlich objektorientiert - OO- und UML

Transcript
PHP und XML
tation zur Verfügung gestellt, um anderen Anwendungen – die natürlich auch in einer
anderen Programmiersprache verfasst sein können – eine Anleitung für einen erfolgreichen Import-Vorgang zu liefern.
Grundlagen des Parsens: Ströme vs. Bäume
Grundsätzlich existieren zwei verschiedene Verfahren, um XML-Dateien zu verarbeiten,
also zu parsen. Die erste Art besteht darin, eine XML-Datei als Datenstrom aufzufassen.
Diese Idee wird von SAX-Parsern (Simple API for XML) verfolgt. Bei SAX handelt es sich
um einen De-facto-Standard, der sich an den Elementen der XML-Datei orientiert.
Die Datei wird dabei automatisch eingelesen. Trifft der SAX-Parser auf ein Beginn- oder
ein Ende-Element, so wird jeweils eine bestimmte Methode aufgerufen, die Sie implementieren müssen. Dies gilt ebenso, wenn Daten zwischen einem Element erkannt wurden, wie in <name>Dopatka</name>. In Abhängigkeit von dem Zustand des Einlesens,
den Sie selbst definieren und verwalten müssen, sind die Daten der Elemente dann auszuwerten. Abbildung 4.15 skizziert, wie der Beginn des Eintrags <vorkenntnisse> vom
SAX-Parser erkannt wird und eine Weiterleitung an die selbst zu implementierende
PHP-Methode start erfolgt.
Abbildung 4.15: Prinzip eines SAX-Parsers
Prinzipiell benötigen SAX-Parser wenig Speicher und sind schnell in der Verarbeitung
der Daten. Andererseits ist die Interpretation der Daten oft aufwendig zu implementieren und Sie besitzen keine Sicht auf den gesamten XML-Baum. SAX-Parser eignen sich
besonders dann, wenn Sie in einer XML-Datei nach Inhalten suchen oder nur einen Teil
der XML-Datei auslesen wollen.
Im Gegensatz zu SAX wird das DOM (Document Object Model) vom W3C (World Wide
Web Consortium) als Organisation definiert. Das Ziel eines DOM-Parsers besteht darin,
die Baumstruktur der XML-Datei im Speicher nachzubilden, wobei jeder Knoten und
jedes Blatt aus einem Objekt besteht. Die wichtigsten Knoten im DOM sind
쮿
der Dokumentknoten, der die gesamte Baumstruktur darstellt
쮿
Dokumentfragmentknoten, die jeweils einen Teil der Baumstruktur darstellen
PHP – Endlich objektorientiert
295