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