DOMDocument

XML LogAnalayser mit DOMDocument

Im vorherigen Abschnitt haben wir den Analyser für die XML Datei auf der Basis von SimpleXML implementiert.


In diesem Abschnitt wird die PHP Klasse DOM Document bzw. XPath verwendet. DOM (Document Object Model) ist eine Spezifikation des W3C zum Zugriff auf HTML und XML Dokumente

class DOMLoganalyser implements LogAnalyserInterface {

	/**
	* @param string $filename
	*/
	protected $filename;

	/**
	* @param DOMDOcument
	**/
	protected $parsedXML = null;

	/**
	* @param string $filename	
	**/
	public function setFilename($filename) {
		if(!file_exists($filename) ){
			$msg = "Input xml file does not exist";
			throw new InvalidArgumentException($msg);
		}

		$this->filename = $filename;
	}

	/**
	* @return DOMDocument
	**/
	protected function getParsedXML() {
		if($this->parsedXML == null) {
			$this->parsedXML = new DOMDocument;
			$this->parsedXML->load($this->filename);
		}

		return $this->parsedXML;
	}

	/**
	* @param string 
	* @return integer 
	**/
	public function getPageviewsForIp($ipToCheck) {
		$visitCount	= 0;
		$dom	 	= $this->getParsedXML();
		$xpath		= new DOMXPath($dom);
		$expression 	= '//visit[@ip="'.$ipToCheck.'"]';
		$nodes		= $xpath->query($expression);

		return $nodes->length;
	}

}

In der DOM Variante wird zunächst eine Instanz des DOMDocumentes erzeugt und mit der Methode "load" der Inhalt in den Speicher gelesen.  Mit dem XPath Ausdruck '//visit[@ip="72.123.21.23"]' werden nun mit Hilfe der Klasse DOMXPath die Knoten ermittelt, die relevant sind.

Die Nutzung von DOM hat also folgende Vor- und Nachteile:

Vor- und Nachteile von DOMDocument

Vorteile:

  • Einfache Ermittlung von Knoten mittels XPath.
  • Performat, wenn das XML in den Speicher geladen wird, da durch XPath schnell selektiv auf bestimmte Knoten zugegriffen werden kann.


Nachteile:


  • Das XML Dokument muss komplett in den Speicher passen, also unpraktikabel für sehr große Dateien.

Navigation