XML mit PHP verarbeiten

XML mit PHP verarbeiten

Früher oder später kommt man bei einem Projekt an den Punkt, wo man XML Dateien mit PHP verarbeiten muss. Jenachdem welche Anforderungen man hat, ist die ein oder andere Technologie sinnvoll.

Dieser Artikel soll einen Überblick über die Technologien zur XML Verarbeitung in PHP geben und jeweils Vor- und Nachteile erläutern.


Kurzüberlick über die XML Technologien in PHP

Zunächst ein kurzer Überblick über die einzelnen Technologien:

1. Simplexml:

Mittels simplexml kann xml eingelesen werden und mit einfacherer Array Syntax auf die Werte zugegriffen werden.

Vorteile:

+ Einfacher Zugriff, da der Zugriff wie auf Arrays erfolgt

Nachteile:

- Gezielter Zugriff auf bestimmte Knoten nicht ganz so simple wie bei DOM
- XML Dokument muss in den Speicher passen, also nicht praktikabel für große Dateien

2. DOMDocument:

DOM Dokument bietetet den Zugriff auf die einzelnen Knoten mittels DOM. Dabei wird das XML Dokument als
Baumstruktur gesehen und DOMDocument bietet Methoden um auf die einzelnen Knoten zuzugreifen.

Vorteile:

+ Flexibler Zugriff auf Knoten und Attribute
+ Gut geeignet auch um XML Dokumente zu erstellen
+ Unterstützung von XML und HTML in PHP
+ XPath bietet standardisierte Zugriffmöglichkeiten auf Knoten im XML

Nachteile:

- XML Dokument muss im Speicher vorliegen

3. XMLReader/XMLWriter:

XMLReader/XMLWriter bieten die Möglichkeit XML Dateien seriel, also Knoten für Knoten einzulesen.

Dadurch ist die Verarbeitung der Daten etwas schwieriger. Der große Vorteil dieser Methode ist aber, dass die XML Datei nicht komplett im Speicher vorliegen muss. Diese Variante eignet sich also immer dann wenn die Verarbeitung Speicheroptimiert erfolgen soll, oder es sich um besonders große XML Dateien handelt.

Vorteile:

+ Sehr Speicher schonend
+ Einzelne Knoten können während der Verarbeitung in ein DOMDocument konvertiert werden

Nachteil:

+ Die serielle Verarbeitung ist etwas komplizierter, weil der Zustand(An welcher Stelle des XMLs man sich gerade befindet) selbst verwaltet werden muss.

XML Technologien im Vergleich

Nach diesem kurzen Überblick möchte ich mit den einzelnen Technologien kurz einen Analyzer für die folgende Beispiel XML Logdatei vorstellen und daran Vor- und Nachteile der jeweiligen Technologie analysieren:

<?xml version="1.0" encoding="UTF-8" ?>
<accesslog>
	<visit ip="72.123.21.23">
		<site>http://www.admin-wissen.de/index.html</site>
		<os>Linux</os>
		<date>01.01.2012 12:10:45</date>
	</visit>
	<visit ip="23.12.32.12">
		<site>http://www.admin-wissen.de/tutorials.html</site>
		<os>Windows</os>
		<date>01.01.2012 12:11:09</date>
	</visit>
	<visit ip="23.12.32.12">
		<site>http://www.admin-wissen.de/tutorials.html</site>
		<os>Windows</os>
		<date>01.01.2012 12:11:09</date>
	</visit>
	<visit ip="72.123.21.23">
		<site>http://www.admin-wissen.de/tutorials.html</site>
		<os>Linux</os>
		<date>01.01.2012 12:12:21</date>
	</visit>
</accesslog>


Das LogAnalyser Interface

Für diese XML Datei soll eine Analyzerklasse geschrieben werden. Die die Anzahl der Seitenaufrufe für eine bestimmte IP Adresse ermittelt:

interface LogAnalyserInterface {

	/**
	* @param string $filename
	**/
	public function setFilename($filename);

	/**
	* @param string $ipadress
	* @return integer 
	**/
	public function getPageviewsForIp($ipadress);
}

Implemetierung in den einzelnen XML Technologien

  • SimpleXML
    • XML Loganalyser mit SimpleXML
    • Ausführung des Beispielcodes
    • Vor- und Nachteile der SimpleXML Implementierung
  • DOMDocument
    • XML LogAnalayser mit DOMDocument
    • Vor- und Nachteile von DOMDocument
  • XMLReader
    • PHP Loganalyser mit XMLReader
    • Vor- und Nachteile von XML Reader

Navigation