Anzeige
Tutorialbeschreibung

PHP - Teil 36 - XML (Teil 1): Diese XML-Extensions gibt es

PHP - Teil 36 - XML (Teil 1): Diese XML-Extensions gibt es

XML ist aus modernen Webanwendungen kaum noch wegzudenken, auch wenn es dort oft „nur“ im Hintergrund arbeitet. In diesem Video-Training wird gezeigt, wie sich XML in Verbindung mit PHP verwenden lässt. Dabei wird davon ausgegangen, dass grundlegende XML-Kenntnisse vorhanden sind. Eine Einführung in XML würde hier den Rahmen sprengen. Dieses erste Video-Training wirft einen Blick auf die verschiedenen Erweiterungen, die PHP für den Einsatz im XML-Umfeld mitbringt.

Icon-Ersteller: Oxygen-Team

... übrigens findest du die komplette Serie hier: PHP-Workshop-DVD - Basics & Tricks - Schnapp sie dir in unserem Shop oder in der Kreativ-Flatrate!


PHP unterstützt XML bereits seit Längerem. Allerdings wurde der XML-Support mit Einführung von PHP 5 noch einmal grundlegend überarbeitet. Seit dieser Version basieren sämtliche PHP-XML-Erweiterungen auf libxml2-Library des GNOME-Projekts. Vorteil dieser Variante: PHP hält sich nun (weitestgehend) an bestehende Standards.

Bei libxml2 handelt es sich um eine eigenständige Bibliothek, die von verschiedenen Programmen und Sprachen genutzt werden kann, u.a. eben auch von PHP. Die Bibliothek ist vollständig in C++ geschrieben und lässt sich beispielsweise in den folgenden Systemen verwenden:

• Windows
• Linux
• Mac OS X
• FreeBSD

Die offizielle Projektwebseite lautet http://xmlsoft.org/. Auf dieser Seite gibt es u.a. interessante Tutorials zur Bibliothek und zu XML.

Bilder



 
Ob die libxml bei euch installiert ist, könnt ihr ganz einfach herausfinden. Ruft dazu die bekannte phpinfo()-Funktion auf und sucht darin nach dem Bereich dom.

Bilder



Dort sollte die installierte libxml-Version zu sehen sein. PHP 5 benötigt mindestens 2.5.10. Bei XAMPP ist die libxml standardmäß aktiviert.

 
Zusätzlich zur libxml sollte auch libxslt aktiviert werden. Diese Bibliothek bildet die Grundlage für die Transformation von Dokumenten mittels XSLT unter PHP. Um diese Bibliothek unter Windows verfügbar zu machen, muss folgender Eintrag in die php.ini eingefügt werden:

extension=php_xsl.dll

Nach einem Neustart des Servers gibt es nach einem Aufruf von phpinfo() einen xsl-Bereich.

Bilder



Wer unter Linux oder am Mac arbeitet, muss libxslt über --with-xsl hinzufügen.


 

XML in PHP verwenden

Es gibt ganz unterschiedliche Möglichkeiten, wie man XML innerhalb von PHP nutzen kann. In PHP gibt es einige Extensions, die speziell für den XML-Einsatz entwickelt wurden. Typische Vertreter sind hier DOM und SimpleXML.

Die verschiedenen Varianten lassen sich zunächst einmal sehr gut anhand der Operationen einteilen, die auf die XML-Dateien angewandt werden sollen. Die folgende Tabelle stellt die jeweiligen Möglichkeiten anhand dieser Operationen vor.

Operation
PHP-Variante

Ein neues Dokument anlegen.

DOM, XML Writer

Ein bestehendes Dokument transformieren/verändern.

DOM, SAX, SimpleXML

Dokumente einlesen und verwenden, ohne sie zu verändern.

DOM, XML Reader, SAX

Bestimmte Inhalte abfragen.

DOM, SimpleXML, SDO

Dokumente validieren, also auf ihre Gültigkeit hin überprüfen.

DOM, XML Reader, SimpleXML

Nun stellt sich natürlich die Frage, was die einzelnen Erweiterungen können. Genau das wird nachfolgend geklärt, wobei hier nur ein Blick auf die wichtigsten dieser Extensions geworfen wird.

 
Einen vollständigen Überblick darüber könnt ihr euch auf der Seite http://www.php.net/manual/de/refs.xml.php verschaffen.

Bilder



Das sind die wichtigsten Extensions für XML, wenngleich diese Auswahl natürlich rein subjektiv erfolgt ist:

• DOM – Diese Extension erlaubt das Bearbeiten von XML-Dokumenten auf Basis der DOM-API des W3C. (Wobei DOM hier für Document Object Model steht).
• XML Writer – Diese Extension verwendet man, wenn man XML-Dokumente erstellen will.
• SimpleXML – Hiermit lassen sich XML-Dokumente – und das verrät bereits der Name – sehr einfach verarbeiten.
• XML Reader – Diese Extension wird verwendet, um die Knoten eines XML-Dokuments nacheinander abzuarbeiten.
• XSL – Diese Erweiterung ermöglicht die Transformation von Dokumenten über den XSL-Standard.

In den nächsten XML-Tutorials werden einige dieser Extensions noch einmal genauer unter die Lupe genommen; schließlich bilden sie die Basis für die Arbeit mit XML unter PHP.


Ein erstes Beispiel

Ob ihr XML nun tatsächlich in Kombination mit PHP nutzen könnt, lässt sich am besten anhand eines Beispiels überprüfen. Ausgangspunkt dafür ist ein einfaches XML-Dokument.

<?xml version="1.0" encoding="utf-8" ?>
  <sprachen>
    <sprache>
      <id>1</id>
      <name>PHP</name>
      <link>http://php.net/</link>
    </sprache>
    <sprache>
      <id>2</id>
      <name>CSS</name>
      <link>http://www.w3.org/Style/CSS/</link>
    </sprache>
    <sprache>
      <id>3</id>
      <name>XML</name>
      <link>http://www.w3.org/XML/</link>
    </sprache>
     <sprache>
      <id>4</id>
      <name>XHTML</name>
      <link>http://www.w3.org/TR/xhtml1/</link>
    </sprache>
  </sprachen>


Es handelt sich hierbei um ein typisches (wenn natürlich auch sehr einfaches) XML-Dokument. Der Root-Knoten lautet sprachen. Innerhalb dieses Knotens sind verschiedene Kindknoten enthalten, die jeweils wieder Kindknoten besitzen. Dabei repräsentieren die einzelnen sprache-Elemente jeweils eigene Skript- und Programmiersprachen.

<sprache>
   <id>2</id>
   <name>CSS</name>
   <link>http://www.w3.org/Style/CSS/</link>
</sprache>


 
Ruft man dieses Dokument im Browser auf, ergibt sich folgendes Bild:

Bilder



Wie bereits beschrieben, hält PHP verschiedene Erweiterungen bereit, um mit XML-Dokumenten zu arbeiten. Eine recht komplexe Erweiterung ist dabei DOM, durch die sich beispielsweise das Document Object Model des jeweiligen Dokuments manipulieren lässt. Diese Erweiterung ist vergleichsweise komplex und wird in einem späteren Tutorial noch einmal genauer beschrieben. Wer aber beispielsweise die entsprechenden DOM-Methoden aus JavaScript kennt, wird sich bei dieser Erweiterung schnell zurechtfinden.

Deutlich einfacher ist da die Erweiterung SimpleXML. Zu dieser Erweiterung hier ein erstes Beispiel:

<?php
  $sprachen = simplexml_load_file('sprachen.xml');
  echo $sprachen->sprache[0]->name, '<br />';
  echo $sprachen->sprache[0]->id, '<br />';
  echo $sprachen->sprache[0]->link;
?>


 
Über simplexml_load_file() gibt man die XML-Datei an, die geladen werden soll. Dabei sorgt die Funktion dafür, dass die angegebene XML-Datei in ein Objekt übersetzt wird, mit dem anschließend gearbeitet werden kann.

Nun sollten die Inhalte ausgegeben werden. Dazu wird auf die einzelnen Eigenschaften des Objekts zugegriffen. Mit $sprachen->sprache[0]->name, '<br />'; wird auf das 1. name-Element des ersten sprache-Elements zugegriffen, wobei die interne Zählung der Elemente bei 0 beginnt. Genauso verhält es sich dann auch mit den beiden anderen Einträgen. Wollt ihr auf den zweiten Datensatz zugreifen, müsstet ihr dann jeweils sprache[1] notieren.

Bilder



Nun ist dieser Einzelzugriff natürlich nicht ideal, da man normalerweise gleich mehrere Datensätze ausgeben will. Damit das funktioniert, muss eine Schleife definiert werden.

<?php
  $sprachen = simplexml_load_file('sprachen.xml'); 
  foreach($sprachen->sprache as $item) {
     print $item->name ." <br />";
  }
?>


 
Ruft man diese Seite im Browser auf, ergibt sich folgendes Bild:

Bilder



Die Schleife, die für diese Ausgabe verantwortlich ist, liest sämtliche item-Elemente aus, die die Eigenschaft $sprachen->item. $item->name haben, wodurch der Name der jeweiligen Sprache ausgegeben wird.

Selbstverständlich kann man auch sämtliche Inhalte ausgeben. Die entsprechende Syntax sähe dann folgendermaßen aus:

<?php
  $sprachen = simplexml_load_file('sprachen.xml'); 
  foreach($sprachen->sprache as $item) {
     print $item->id . " " . $item->name . " " . $item->link;
     print "<br />";
  }
?>


 
Ein Blick in den Browser liefert das gewünschte Ergebnis.

Bilder



Auch hierbei wäre wieder der Aufruf über ein assoziatives Array möglich. Wie das funktioniert, wurde bereits anhand eines anderen Beispiels gezeigt.


Fazit

PHP hat mit Version 5 einen deutlichen Qualitätssprung in Sachen XML hingelegt. So halten sich die Extensions jetzt endlich an die Vorgaben des W3C bzw. an bestehende Standards. Problematisch ist das lediglich für all diejenigen, die ihre XML-Anwendungen bislang unter PHP 4 entwickelt haben. Diese Anwendungen müssen nämlich für PHP 5 weitestgehend neu geschrieben werden.

Kommentare
Achtung: Du kannst den Inhalt erst nach dem Login kommentieren.
Portrait von franzg
  • 15.05.2017 - 14:49

Vielen Dank für das interessante Tutorial!

Alternative Portrait
-versteckt-(Autor hat Seite verlassen)
  • 07.10.2016 - 13:05

Danke tolles Video !

Portrait von dmtw2107
  • 16.11.2013 - 09:50

verständlich und toll erklärt danke für das tutorial

Portrait von Martingiga
  • 13.10.2013 - 20:50

Einfach und verständlich erklärt hat mir gut geholfen

Portrait von tampen
  • 30.10.2012 - 12:18

...einfach und verständlich erklärt - kleines, simples Einsteiger Tut.

Portrait von tomhade
  • 02.01.2012 - 11:51

Prima Serie. Für mich ist es sehr hilfreich weiter in die Materie PHP vorzudringen.

x
×
×