<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.5.47.162</id>
	<title>Wikizone - Benutzerbeiträge [de]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.stephanschlegel.de/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=46.5.47.162"/>
	<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Spezial:Beitr%C3%A4ge/46.5.47.162"/>
	<updated>2026-05-06T19:47:30Z</updated>
	<subtitle>Benutzerbeiträge</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Woax_it_-_easyFirma&amp;diff=21385</id>
		<title>Woax it - easyFirma</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Woax_it_-_easyFirma&amp;diff=21385"/>
		<updated>2016-03-03T08:50:01Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: Die Seite wurde neu angelegt: „Programm zur Faktura  == Tipps und Tricks == === Angepasste Anrede === https://www.woax-it.com/blog/articleid/103/angepasste-anredeformen“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Programm zur Faktura&lt;br /&gt;
&lt;br /&gt;
== Tipps und Tricks ==&lt;br /&gt;
=== Angepasste Anrede ===&lt;br /&gt;
https://www.woax-it.com/blog/articleid/103/angepasste-anredeformen&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Google_Maps_-_Snippets&amp;diff=21379</id>
		<title>Google Maps - Snippets</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Google_Maps_-_Snippets&amp;diff=21379"/>
		<updated>2016-02-19T18:18:14Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* Link auf Google Maps Routenplaner */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Link auf Google Maps Routenplaner ==&lt;br /&gt;
Beispiel einfacher Link:&lt;br /&gt;
 https://www.google.de/maps/dir//Rinckstr.+7-11+D-83435+Bad+Reichenhall&lt;br /&gt;
oder mit Geokoordinaten:&lt;br /&gt;
 &amp;lt;a href=&amp;quot;http://maps.google.com/maps?daddr=51.38732,7.67878&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;Direkt zum Routenplaner&amp;amp;lt;/a&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Beispiel Button auf Google Karte:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html5&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;gmroute&amp;quot; style=&amp;quot;z-index: 30001;position: relative;height: 30px;right: 40px;top: 40px;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a href=&amp;quot;https://www.google.de/maps/dir//Am+Herrenberg+7-9+D-86932+Pürgen&amp;quot; target=&amp;quot;_blank&amp;quot;  style=&amp;quot;background-color: #5B5B5B;color:white; border: 1px solid #777;float: right;padding: 8px;&amp;quot;&amp;gt;&lt;br /&gt;
    Route mit Google Maps planen.&lt;br /&gt;
    &amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Einfache Karte ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Simple Map&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;initial-scale=1.0, user-scalable=no&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;utf-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
      html, body, #map-canvas {&lt;br /&gt;
        height: 100%;&lt;br /&gt;
        margin: 0px;&lt;br /&gt;
        padding: 0px&lt;br /&gt;
      }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://maps.googleapis.com/maps/api/js?v=3.exp&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script&amp;gt;&lt;br /&gt;
var map;&lt;br /&gt;
function initialize() {&lt;br /&gt;
  var mapOptions = {&lt;br /&gt;
    zoom: 8,&lt;br /&gt;
    center: new google.maps.LatLng(-34.397, 150.644)&lt;br /&gt;
  };&lt;br /&gt;
  map = new google.maps.Map(document.getElementById(&amp;#039;map-canvas&amp;#039;),&lt;br /&gt;
      mapOptions);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
google.maps.event.addDomListener(window, &amp;#039;load&amp;#039;, initialize);&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;/script&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div id=&amp;quot;map-canvas&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zusätzliche Google Maps Libraries einbinden ==&lt;br /&gt;
Beispiel:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;script src=&amp;quot;http://maps.googleapis.com/maps/api/js?sensor=false&amp;amp;libraries=drawing,places&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=E-Mail&amp;diff=21378</id>
		<title>E-Mail</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=E-Mail&amp;diff=21378"/>
		<updated>2016-02-19T12:31:04Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Postfix auf Mac einrichten ==&lt;br /&gt;
[[Postfix auf Mac OS]]&lt;br /&gt;
&lt;br /&gt;
== Einstellungen bei verschiedenen Anbietern ==&lt;br /&gt;
=== Googlemail ===&lt;br /&gt;
Die Konfigurationsanleitung für IMAP gilt auch für den Fall, dass Sie einen anderen als die aufgelisteten Clients verwenden. Wenden Sie sich bei Problemen an den Support für Ihren E-Mail-Client und erbitten Sie eine genaue Anleitung.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Posteingangsserver (IMAP) – SSL erforderlich:&lt;br /&gt;
imap.gmail.com&lt;br /&gt;
Port: 993&lt;br /&gt;
SSL erforderlich: Ja&lt;br /&gt;
Postausgangsserver (SMTP) – TLS erforderlich:&lt;br /&gt;
smtp.gmail.com&lt;br /&gt;
Port: 465 oder 587&lt;br /&gt;
SSL erforderlich: Ja&lt;br /&gt;
Authentifizierung erforderlich: Ja&lt;br /&gt;
Gleiche Einstellungen wie für den Posteingangsserver verwenden&lt;br /&gt;
Vollständiger Name oder Anzeigename: [Ihr Name]&lt;br /&gt;
Konto- oder Nutzername: Ihre vollständige Gmail-Adresse (nutzername@gmail.com). Google Apps-Nutzer geben bitte nutzername@ihre_domain.de ein.&lt;br /&gt;
E-Mail-Adresse: Ihre vollständige Gmail-Adresse (nutzername@gmail.com). Google Apps-Nutzer geben bitte nutzername@ihre_domain.de ein.&lt;br /&gt;
Passwort: Ihr Gmail-Passwort&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
== E-Mail auf all-inkl ==&lt;br /&gt;
=== Konfiguration für SSL ===&lt;br /&gt;
Die Zertifikate sind auf kasserver.com ausgestellt, deshalb muß man für sichere Übertragung die richtigen Daten verwenden um Zertifikatsfehler zu vermeiden.&lt;br /&gt;
Der Mailserver für IMAP und POP3 heißt dann:&lt;br /&gt;
&lt;br /&gt;
 accountname.kasserver.com&lt;br /&gt;
 korockt.kasserver.com&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
== Mails aus Thunderbird exportieren ==&lt;br /&gt;
Für Updates kann man einfach die Ordnerstruktur in der die Mails liegen kopieren und wieder in der neuen Version abspeichern. Bei neueren Versionen funktioniert das Update automatisch.&lt;br /&gt;
&lt;br /&gt;
===Export nach Outlook Express===&lt;br /&gt;
* Die betreffenden Mails als Anhang an sich selbst weiterleiten (die Mails werden dabei als *.eml Files in den Anhang gepackt.)&lt;br /&gt;
* Im Outlook Express die Mail herunterladen. Die Anhänge in einen beliebigen Mailordner ziehen - fertig. Die Mails enthalten alle Daten auch die Header-Daten. Wenn es Zugriffs-Probleme gibt einfach die Mails kurz auf der Festplatte zwischenspeichern, und erst danach in den Mailordner ziehen.&lt;br /&gt;
&lt;br /&gt;
== Grundsätzlicher Ablauf einer Mailübertragung ==&lt;br /&gt;
von: http://www.lrz-muenchen.de/services/netzdienste/email/empfang/ (14.7.2006)&lt;br /&gt;
Um zu verstehen, was im DNS konfiguriert werden muß und weshalb, soll zuerst der Ablauf der Übertragung einer Mail beschrieben werden.&lt;br /&gt;
&lt;br /&gt;
Jede Mailadresse besteht aus zwei Teilen, dem lokalen Teil links vom &amp;#039;@&amp;#039;-Zeichen und der Domain rechts davon. Die Domain bestimmt das Routing, d.h. den Weg vom Mailserver des Absenders zum Mailserver des Empfängers. Der linke Teil bestimmt, was der empfangende Mailserver mit der Mail machen soll. In der Regel wird er die Mail an eine lokal vorhandene Mailbox ausliefern.&lt;br /&gt;
&lt;br /&gt;
Der sendende Mailserver muß feststellen, an welchen Rechner er die Mail schicken muß. Dies kann bereits der Zielrechner sein, auf dem sich die Mailbox befindet, oder ein erster Rechner auf dem Weg zum Zielrechner (store-and-forward-Prinzip). Die notwendige Information bekommt er entweder aus einer internen Konfiguration - für uns hier nicht weiter interessant - oder aus dem DNS.&lt;br /&gt;
&lt;br /&gt;
Im DNS gibt es verschiedene Arten von Einträgen - sogenannte Resource Records -, bei denen einem Domainnamen bestimmte Informationen zugeordnet sind. Bei der Abfrage des DNS gibt man den Domainnamen und den Typ des Eintrags an und bekommt die zugehörige Information geliefert. Unter einem Domainnamen kann man verschiedene Dinge verstehen.&lt;br /&gt;
&lt;br /&gt;
Beim Mailversand spielen drei Typen von Einträgen eine Rolle:&lt;br /&gt;
&lt;br /&gt;
    * A-Record: zu einem Domainnamen (Rechner) wird die zugehörige IP-Adresse ausgegeben. Besitzt ein Rechner mehrere IP-Adressen, so gibt es entsprechend viele A-Records zum Domainnamen.&lt;br /&gt;
    * MX-Record: zu einem Domainnamen wird der zugehörige Mailserver ausgegeben. Meistens sind mehrere MX-Records zu einem Domainnamen konfiguriert. Zur Unterscheidung besitzt jeder MX-Record eine Priorität (kleine Zahl = große Priorität). Der MX-Record mit der höchsten Priorität ist der eigentliche Zielrechner, auf dem sich die Mailboxen befinden, die anderen MX-Records bezeichnen die Backup-Rechner für den Fall, daß der eigentliche Zielrechner nicht erreicht werden kann. Sie speichern die Mails nur temporär und versuchen periodisch die Mail an den eigentlichen Zielrechner weiterzuleiten.&lt;br /&gt;
    * CNAME-Record: der Domainname ist ein Alias für den angegebenen Rechner. Dieser Eintrag wird für Mail kaum verwendet und daher im folgenden nicht weiter betrachtet (sollten Sie aber so einen Eintrag zum Mailempfang verwenden, wenden Sie sich bitte an Herrn Spirk, spirk@lrz.de, damit er Ihnen bei der Migration helfen kann).&lt;br /&gt;
&lt;br /&gt;
Ablauf einer Mailübertragung (soweit es hier interessiert):&lt;br /&gt;
&lt;br /&gt;
    * Der sendende Mailserver fragt im DNS nach den MX-Records für die Domain in der Mailadresse.&lt;br /&gt;
    * Gibt es keinen MX-Record, so wird die Existenz eines MX-Records mit Priorität 0 angenommen, der auf die nachgefragte Domain zeigt (in der Praxis heißt dies, der Domainname ist der Zielrechner, zu dem eine Verbindung aufgebaut werden muß).&lt;br /&gt;
    * Gibt es MX-Records, so werden diese nach Priorität sortiert. Zeigt einer der MX-Records auf den anfragenden Mailserver selbst, so wird dieser MX-Record und alle anderen gleicher oder niedrigerer Priorität ignoriert und nur die MX-Records mit höherer Priorität beachtet.&lt;br /&gt;
    * Für den Rechner aus dem MX-Record mit der höchsten Priorität wird eine Anfrage nach dem A-Record und damit nach der IP-Adresse des Rechners gestellt. Dieser A-Record muß existieren, sonst ist kein Mailaustausch möglich.&lt;br /&gt;
    * Zu dieser IP-Adresse wird eine Verbindung aufgebaut und die Mail übertragen.&lt;br /&gt;
    * Kann zu der IP-Adresse keine Verbindung aufgebaut werden, so wird der MX-Record mit der nächstniedrigeren Priorität genommen, der A-Record abgefragt und die Verbindung aufgebaut (Backup-Fall).&lt;br /&gt;
    * Kommt zu keinem der Rechner aus den MX-Records eine Verbindung zustande, so bleibt die Mail am absendenden Mailserver liegen und der ganze Ablauf beginnt nach einiger Zeit von neuem.&lt;br /&gt;
&lt;br /&gt;
Was bedeutet dies nun, wenn z.B. eine Mail von einem Mailserver aus dem Internet an die Mailadresse xyz@vetmed.uni-muenchen.de geschickt werden soll? Im DNS seien folgende MX- und A-Records eingetragen:&lt;br /&gt;
 &lt;br /&gt;
 Domainname  	Typ 	Prio 	 Wert &lt;br /&gt;
 vetmed.uni-muenchen.de  	MX 	10 	 cip-tf2.cip.vetmed.uni-muenchen.de &lt;br /&gt;
 vetmed.uni-muenchen.de  	MX 	20 	 mailrelay1.lrz-muenchen.de &lt;br /&gt;
 vetmed.uni-muenchen.de  	MX 	30 	 mailrelay2.lrz-muenchen.de &lt;br /&gt;
			&lt;br /&gt;
 cip-tf2.cip.vetmed.uni-muenchen.de  	A 	  	 141.84.176.126 &lt;br /&gt;
 mailrelay1.lrz-muenchen.de  	A 	  	 129.187.254.101 &lt;br /&gt;
 mailrelay2.lrz-muenchen.de  	A 	  	 129.187.254.102 &lt;br /&gt;
&lt;br /&gt;
    * Der sendende Mailserver bekommt auf Nachfrage im DNS diese drei MX-Records.&lt;br /&gt;
    * Der MX-Record mit der höchsten Priorität zeigt auf cip-tf2.cip.vetmed.uni.lrz-muenchen.de. Der sendende Mailserver versucht daher zu diesem Rechner eine Verbindung aufzubauen. Da cip-tf2.cip.vetmed.uni.lrz-muenchen.de nicht zu den im MHN zugelassenen Mailrelays gehört, wird die Verbindung am Router zwischen B-WiN und MHN blockiert.&lt;br /&gt;
    * Der MX-Record mit der nächst niedrigeren Priorität zeigt auf den Mailrelay mailrelay1.lrz-muenchen.de, der als Backup dient. Der Verbindungsaufbau kommt zustande, da  mailrelay1.lrz-muenchen.de im Gegensatz zu cip-tf2.cip.vetmed.uni.lrz-muenchen.de zu den zugelassenen Mailrelays gehört, und so kann die Mail übertragen werden.&lt;br /&gt;
    * mailrelay1.lrz-muenchen.de stellt fest, daß die Mail nicht lokal ausgeliefert, sondern an einen anderen Rechner weitergeleitet werden soll.&lt;br /&gt;
    * Er holt sich ebenfalls die drei MX-Records.&lt;br /&gt;
    * Da der zweite MX-Record auf ihn selbst zeigt, verwirft er diesen und - wegen der noch niedrigeren Priorität- auch den dritten und behält nur den ersten MX-Record.&lt;br /&gt;
    * Er versucht eine Verbindung zu cip-tf2.cip.vetmed.uni.lrz-muenchen.de aufzubauen und die Mail zu übertragen. Dies gelingt, da sich die Mail bereits im MHN befindet und sich der Filter am Router nicht mehr auswirkt.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Daraus folgt, daß in Zukunft für jede Domain, für die Mail empfangen werden soll, mindestens 2 MX-Records existieren müssen. Dies gilt auch für den Mailserver, selbst wenn zur Zeit kein MX-Record für ihn definiert ist und alle E-Mails über den Domainnamen des Mailserver abgewickelt werden. Als Mailserver gelten in diesem Fall alle Rechner, auf denen sendmail oder ein ähnliches Programm zum Mailempfang/versand läuft.&lt;br /&gt;
&lt;br /&gt;
Für cip-tf2.cip.vetmed.uni.lrz-muenchen.de  sollten daher noch die folgenden MX-Records eingetragen werden:&lt;br /&gt;
 &lt;br /&gt;
 Domainname  	Typ 	Prio 	 Wert &lt;br /&gt;
 cip-tf2.cip.vetmed.uni-muenchen.de  	MX 	10 	 cip-tf2.cip.vetmed.uni-muenchen.de &lt;br /&gt;
 cip-tf2.cip.vetmed.uni-muenchen.de  	MX 	20 	 mailrelay1.lrz-muenchen.de &lt;br /&gt;
 cip-tf2.cip.vetmed.uni-muenchen.de  	MX 	30 	 mailrelay2.lrz-muenchen.de &lt;br /&gt;
&lt;br /&gt;
Der MX-Record mit der höchsten Priorität zeigt auf den eigentlichen Mailserver, auf dem die Mailboxen liegen. Der MX-Record mit niedriger Priorität zeigt auf eines der Mailrelays, über den der direkte Empfang aus dem Internet abgewickelt wird. Zur Sicherheit sollte noch ein dritter MX-Record auf einen weiteren Mailrelay zeigen, damit bei Ausfall des ersten Mailrelays als Backup das zweite zur Verfügung steht.&lt;br /&gt;
&lt;br /&gt;
Befinden sich die Mailboxen zu einer Domain auf dem Mailboxserver des LRZ (mailin.lrz-muenchen.de), so gibt es nur die zwei MX-Records auf die beiden Mailrelays mailrelay1.lrz-muenchen.de und mailrelay2.lrz-muenchen.de. Es darf kein MX-Record auf den Mailboxserver zeigen. E-Mails gelangen von den Mailrelays zum Mailboxserver über eine interne Kopplung. Es sind in diesem Fall also nur 2 MX-Records definiert:&lt;br /&gt;
 &lt;br /&gt;
 Domainname  	Typ 	Prio 	 Wert &lt;br /&gt;
 jura.uni-muenchen.de  	MX 	20 	 mailrelay1.lrz-muenchen.de &lt;br /&gt;
 jura.uni-muenchen.de  	MX 	30 	 mailrelay2.lrz-muenchen.de &lt;br /&gt;
Was ist also zu tun?&lt;br /&gt;
Es muß&lt;br /&gt;
&lt;br /&gt;
   1. festgelegt werden, über welche(n) Mailrelay(s) Mails empfangen werden sollen und&lt;br /&gt;
   2. die entsprechende Konfiguration im DNS durchgeführt werden.&lt;br /&gt;
&lt;br /&gt;
Daraus ergeben sich die folgenden Arbeitsschritte:&lt;br /&gt;
&lt;br /&gt;
   1. Überprüfung, ob es bereits MX-Records im DNS gibt:&lt;br /&gt;
          * Stellen Sie fest, ob für Ihre Maildomain bereits MX-Records im DNS definiert sind, unter Unix z.B. mit nslookup -q=mx maildomain (s.a. nslookup auf LRZ-Nameserver)&lt;br /&gt;
          * Zeigt einer der MX-Records bereits auf eines oder mehrere der Mailrelays (s. obige Tabelle), so sind Sie bereits fertig.&lt;br /&gt;
          * Zeigt einer der MX-Records auf sunsrv5.lrz-muenchen.de (s. obiges Beispiel für jura.uni-muenchen.de) oder vielleicht sogar noch auf cd1.lrz-muenchen.de, so müssen diese Einträge auf die Mailrelays mailrelay1.lrz-muenchen.de und mailrelay2.lrz-muenchen.de geändert werden, s. weiter unten.&lt;br /&gt;
          * Gibt es keinen MX-Record oder zeigt dieser nicht auf eines der Mailrelays, so muß ein Mailrelay ausgesucht werden.&lt;br /&gt;
   2. Auswahl eines Mailrelays&lt;br /&gt;
          * Gibt es in Ihrer Fakultät bereits ein Mailrelay, so bietet sich dieses an.&lt;br /&gt;
          * Arbeiten Sie eng mit einer anderen Fakultät zusammen, die ein Mailrelay hat, so wäre dies eine weitere Möglichkeit.&lt;br /&gt;
          * In jedem Fall ist es möglich, die zentralen Mailrelays des LRZ zu nutzen. Lassen Sie hierfür zwei MX-Records auf mailrelay1.lrz-muenchen.de und mailrelay2.lrz-muenchen.de eintragen, wobei die Priorität für mailrelay1.lrz-muenchen.de höher als die Priorität für mailrelay2.lrz-muenchen.de sein soll.&lt;br /&gt;
          * Denken Sie bei der Auswahl an die Betriebsregeln des Mailrelays (neudeutsch: Policy). Hier gibt es Unterschiede, z.B. welche Mails von woher akzeptiert werden, wie sie weiterverarbeitet werden usw. So kann unter anderem die Größe der akzeptierten Mails unterschiedlich sein:&lt;br /&gt;
                o srv.cip.physik.tu-muenchen.de akzeptiert 4 MByte große Mails&lt;br /&gt;
                o die zentralen Relays des LRZ 20 MByte&lt;br /&gt;
                o charly.bl.physik.tu-muenchen.de 100 MByte&lt;br /&gt;
                o und die anderen Rechner aus obiger Liste haben bisher keine Größenbeschränkung.&lt;br /&gt;
            Die Mail-Policy für die zentralen Mailrelays des LRZ finden sie unter http://www.lrz-muenchen.de/services/netzdienste/email/policy Vereinbarung mit dem Administrator des Mailrelays&lt;br /&gt;
   3.&lt;br /&gt;
          * Sprechen Sie zuerst mit dem Administrator des ausgesuchten Mailrelays, ob er bereit ist, Mails an Ihre Domain über sein Mailrelay zu leiten. Eventuell muß sein Mailrelay umkonfiguriert werden, damit er Mails für Ihre Domain auch entgegennimmt und nicht als unerwünschten Relay-Versuch ablehnt.&lt;br /&gt;
          * Wollen Sie die Mails über die LRZ-Mailrelays leiten, so können Sie das jederzeit tun. Sie müssen nur dann mit uns Kontakt aufnehmen, wenn Ihre Maildomain keine Subdomain der von uns zur Zeit konfigurierten Domains ist, für die wir Mails akzeptieren. Mails an andere Domains werden als unerwünschter Relay-Versuch abgelehnt:&lt;br /&gt;
&lt;br /&gt;
             &lt;br /&gt;
             akzeptierte Domains &lt;br /&gt;
             badw-muenchen.de&lt;br /&gt;
             badw.de&lt;br /&gt;
             isb.bayern.de&lt;br /&gt;
             fh-muenchen.de&lt;br /&gt;
             fh-weihenstephan.de&lt;br /&gt;
             ku-eichstaett.de&lt;br /&gt;
             lrz-muenchen.de&lt;br /&gt;
             lrz.de&lt;br /&gt;
             mgh.de&lt;br /&gt;
             mhn.de&lt;br /&gt;
             tu-muenchen.de&lt;br /&gt;
             tum.de&lt;br /&gt;
             uni-muenchen.de&lt;br /&gt;
             weihenstephan.de&lt;br /&gt;
   4. Konfiguration des DNS, Vereinbarung mit dem Administrator der DNS-Zone&lt;br /&gt;
          * Nachdem Sie den zuständigen Mailserver festgelegt haben (und mit dem zuständigen Mailadministrator gesprochen haben), muß noch die Konfiguration im DNS erfolgen. Zuerst müssen Sie herausfinden, wer die Daten für Ihre Maildomain im DNS verwaltet, unter Unix z.B. durch nslookup -q=soa domainname. Gibt es dazu keine Antwort, müssen Sie die erste Subdomain auf der linken Seite streichen und erneut eine Abfrage stellen. Unter origin findet sich der Rechner, auf dem die DNS-Zone, d.h. die Daten für Ihre Domain verwaltet werden, und unter mail addr die Adresse des Administrators (der erste &amp;#039;.&amp;#039; muß durch ein &amp;#039;@&amp;#039; ersetzt werden).&lt;br /&gt;
          * Nehmen Sie Kontakt mit diesem Administrator auf und lassen Sie MX-Records anhand obiger Erläuterung bzw. Beispiele eintragen, also einen auf Ihren Mailrechner und einen oder zwei auf die ausgesuchten Mailrelays. Denken Sie daran, daß sunsrv5.lrz-muenchen.de oder  cd1.lrz-muenchen.de durch mailrelay1.lrz-muenchen.de und mailrelay2.lrz-muenchen.de ersetzt werden müssen.&lt;br /&gt;
          * Werden die Daten vom DNS-Server des LRZ verwaltet, d.h.&lt;br /&gt;
                o origin ist dfvgate.lrz-muenchen.de und&lt;br /&gt;
                o mail addr ist hostmaster@lrz-muenchen.de und&lt;br /&gt;
                o die MX-Records zeigen auf sunsrv5.lrz-muenchen.de,&lt;br /&gt;
            so müssen Sie nichts tun. Wir stellen die MX-Records selbstständig auf mailrelay1.lrz-muenchen.de und mailrelay2.lrz-muenchen.de um. Im anderen Fall - also insbesondere für das erstmalige Eintragen von MX-Records - wenden Sie sich bitte an hostmaster@lrz-muenchen.de mit der Bitte eines Eintrags für Ihre Maildomain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== E-Mail - Betreff und Inhaltstext automatisch befüllen ==&lt;br /&gt;
=== Link auf der Webseitet öffnet E-Mail Programm und füllt Inhalte aus ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;a href=&amp;quot;mailto:name@domain.de?subject=Betreff&amp;amp;body=inhalt&amp;quot;&amp;gt;Link&amp;lt;/a&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== HTML Inhalte für Versand über URL vorbereiten / enkodieren====&lt;br /&gt;
Einige Sonderzeichen können nicht einfach über den body parameter in der URL versendet werden. Deshalb müssen die Inhalte zuerst kodiert werden.&lt;br /&gt;
&lt;br /&gt;
=====PHP=====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
urlencode()&lt;br /&gt;
urldecode()&lt;br /&gt;
&lt;br /&gt;
rawurlencode()&lt;br /&gt;
rewurldecode()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hierbei wandelt rawurlencode zusätzlich das Leerzeichen um. Bei Kompatibilitätsproblemen kann man es mit dem älteren urlencode probieren.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
echo urlencode (&amp;quot;Übertragener Wert: Ä&amp;quot;);&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ergebnis:&lt;br /&gt;
 %DCbertragener+Wert%3A+%C4&lt;br /&gt;
&lt;br /&gt;
=====JavaScript=====&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Beispiel&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var myEncodedUrl =  &amp;quot;http://example.com/index.html?url=&amp;quot; + encodeURIComponent(myUrl);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zu Beachten:&lt;br /&gt;
&lt;br /&gt;
encodeURI() enkodiert nicht:&lt;br /&gt;
 : ~!@#$&amp;amp;*()=:/,;?+&amp;#039;&lt;br /&gt;
&lt;br /&gt;
encodeURIComponent() enkodiert nicht: &lt;br /&gt;
 ~!*()&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Quelle: http://stackoverflow.com/questions/332872/how-to-encode-a-url-in-javascript (Zugriff 2012-12)&lt;br /&gt;
&lt;br /&gt;
== Probleme lösen ==&lt;br /&gt;
=== iPhone ===&lt;br /&gt;
E-Mail wurde vom Server abgelehnt, da das weiterleiten unzulässig ist.&lt;br /&gt;
&lt;br /&gt;
-&amp;gt; Ausgangsserver nicht auf Optional lassen sonst nimmt er manchmal die falschen daten.&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Apache_-_Access_Logfiles&amp;diff=21377</id>
		<title>Apache - Access Logfiles</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Apache_-_Access_Logfiles&amp;diff=21377"/>
		<updated>2016-02-16T18:02:35Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* Tagesfiles zusammenführen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tipps und Tricks ==&lt;br /&gt;
=== Tagesfiles zusammenführen ===&lt;br /&gt;
http://www.1ngo.de/web/access.log.html#AccessTool&lt;br /&gt;
&lt;br /&gt;
Windows Bat Datei für all-inkl -&amp;gt; Tagesfiles zu Monatsfiles&lt;br /&gt;
&lt;br /&gt;
Aufruf: 2006.bat 05&lt;br /&gt;
Sucht alle Tage des Monats Mai und macht eine draus.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dateiname: 2006.bat&lt;br /&gt;
&lt;br /&gt;
@echo off&lt;br /&gt;
if %1.==01. goto Monat&lt;br /&gt;
if %1.==02. goto Monat&lt;br /&gt;
if %1.==03. goto Monat&lt;br /&gt;
if %1.==04. goto Monat&lt;br /&gt;
if %1.==05. goto Monat&lt;br /&gt;
if %1.==06. goto Monat&lt;br /&gt;
if %1.==07. goto Monat&lt;br /&gt;
if %1.==08. goto Monat&lt;br /&gt;
if %1.==09. goto Monat&lt;br /&gt;
if %1.==10. goto Monat&lt;br /&gt;
if %1.==11. goto Monat&lt;br /&gt;
if %1.==12. goto Monat&lt;br /&gt;
goto Directory&lt;br /&gt;
:Monat&lt;br /&gt;
if not %2.==. goto Kopieren&lt;br /&gt;
if exist access_log_2006-%1.log del access_log_2006-%1.log&lt;br /&gt;
for %%t in (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) do call 2006.bat %1 %%t&lt;br /&gt;
:Directory&lt;br /&gt;
echo.&lt;br /&gt;
dir access_log_2006-%1*.*&lt;br /&gt;
goto Ende&lt;br /&gt;
:Kopieren&lt;br /&gt;
if exist access_log_2006-%1-%2. goto Weiter&lt;br /&gt;
if not exist access_log_2006-%1-%2.gz goto Ende&lt;br /&gt;
win-gz.exe access_log_2006-%1-%2.gz&lt;br /&gt;
:Weiter&lt;br /&gt;
type access_log_2006-%1-%2. &amp;gt;&amp;gt;access_log_2006-%1.log&lt;br /&gt;
if %1.==02. if %2.==28. goto Loeschen&lt;br /&gt;
if %1.==04. if %2.==30. goto Loeschen&lt;br /&gt;
if %1.==06. if %2.==30. goto Loeschen&lt;br /&gt;
if %1.==09. if %2.==30. goto Loeschen&lt;br /&gt;
if %1.==11. if %2.==30. goto Loeschen&lt;br /&gt;
if not %2.==31. goto Ende&lt;br /&gt;
:Loeschen&lt;br /&gt;
echo dekomprimierte TagesLogs des kompletten %1. Monats loeschen !?&lt;br /&gt;
echo --- Abbruch mit Strg-C ---&lt;br /&gt;
pause&lt;br /&gt;
del access_log_2006-%1-??.&lt;br /&gt;
:Ende&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Windows Bat Datei für 1und1:&lt;br /&gt;
&lt;br /&gt;
Dateiname: AD.BAT&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@echo off&lt;br /&gt;
if %1.==. goto Directory&lt;br /&gt;
if %1==1 goto Tag&lt;br /&gt;
if %1==2 goto Tag&lt;br /&gt;
if %1==3 goto Tag&lt;br /&gt;
if %1==4 goto Tag&lt;br /&gt;
if %1==5 goto Tag&lt;br /&gt;
if %1==6 goto Tag&lt;br /&gt;
if %1==7 goto Tag&lt;br /&gt;
if exist access.log.%1.gz win-gz access.log.%1.gz&lt;br /&gt;
if not exist access.log.%1 goto Kopieren&lt;br /&gt;
&lt;br /&gt;
echo.&lt;br /&gt;
echo access.log.%1 ist vorhanden.&lt;br /&gt;
echo access.log.%1.txt und TagesLogs der %1. Kalenderwoche loeschen !?&lt;br /&gt;
echo --- Abbruch mit Strg-C ---&lt;br /&gt;
pause&lt;br /&gt;
if exist access.log.%1.txt del access.log.%1.txt&lt;br /&gt;
for %%t in (1 2 3 4 5 6 7) do if exist access.log.%1.%%t del access.log.%1.%%t&lt;br /&gt;
for %%t in (1 2 3 4 5 6 7) do if exist access.log.%1.%%t.txt del access.log.%1.%%t.txt&lt;br /&gt;
for %%t in (1 2 3 4 5 6 7) do if exist access.log.%1.%%t.gz del access.log.%1.%%t.gz&lt;br /&gt;
goto Directory&lt;br /&gt;
&lt;br /&gt;
:Kopieren&lt;br /&gt;
if exist access.log.%1.txt del access.log.%1.txt&lt;br /&gt;
for %%t in (1 2 3 4 5 6 7) do call ad.bat %%t %1&lt;br /&gt;
goto Directory&lt;br /&gt;
&lt;br /&gt;
:Tag&lt;br /&gt;
if exist access.log.%2.%1 goto Next&lt;br /&gt;
if not exist access.log.%2.%1.gz goto Txt&lt;br /&gt;
win-gz access.log.%2.%1.gz&lt;br /&gt;
if not exist access.log.%2.%1 goto Txt&lt;br /&gt;
del access.log.%2.%1.gz&lt;br /&gt;
goto Next&lt;br /&gt;
:Txt&lt;br /&gt;
if exist access.log.%2.%1.txt type access.log.%2.%1.txt &amp;gt;&amp;gt;access.log.%2.txt&lt;br /&gt;
goto Ende&lt;br /&gt;
:Next&lt;br /&gt;
type access.log.%2.%1 &amp;gt;&amp;gt;access.log.%2.txt&lt;br /&gt;
if exist access.log.%2.%1.txt del access.log.%2.%1.txt&lt;br /&gt;
goto Ende&lt;br /&gt;
&lt;br /&gt;
:Directory&lt;br /&gt;
echo.&lt;br /&gt;
if %1.==. dir access.log.*&lt;br /&gt;
if not %1.==. dir access.log.%1.*&lt;br /&gt;
echo.&lt;br /&gt;
if %1.==. goto Ende&lt;br /&gt;
if exist access.log.%1.txt AccessInfo access.log.%1.txt&lt;br /&gt;
:Ende&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyseprogramm für Windows ===&lt;br /&gt;
&lt;br /&gt;
=== Nach Domain Splitten ===&lt;br /&gt;
&lt;br /&gt;
=== Schnellsuche über Linux Terminal ===&lt;br /&gt;
Suche nach Zeilen mit IP&lt;br /&gt;
 grep &amp;#039;IP&amp;#039; /var/log/apache2/access.log &lt;br /&gt;
Zählen dieser Vorkommen&lt;br /&gt;
 grep IP /var/log/apache2/access.log | wc -l&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Apache_-_Access_Logfiles&amp;diff=21376</id>
		<title>Apache - Access Logfiles</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Apache_-_Access_Logfiles&amp;diff=21376"/>
		<updated>2016-02-16T18:01:14Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* Tagesfiles zusammenführen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tipps und Tricks ==&lt;br /&gt;
=== Tagesfiles zusammenführen ===&lt;br /&gt;
http://www.1ngo.de/web/access.log.html#AccessTool&lt;br /&gt;
Windows Bat Datei für all-inkl&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Dateiname: 2006.BAT&lt;br /&gt;
&lt;br /&gt;
@echo off&lt;br /&gt;
if %1.==01. goto Monat&lt;br /&gt;
if %1.==02. goto Monat&lt;br /&gt;
if %1.==03. goto Monat&lt;br /&gt;
if %1.==04. goto Monat&lt;br /&gt;
if %1.==05. goto Monat&lt;br /&gt;
if %1.==06. goto Monat&lt;br /&gt;
if %1.==07. goto Monat&lt;br /&gt;
if %1.==08. goto Monat&lt;br /&gt;
if %1.==09. goto Monat&lt;br /&gt;
if %1.==10. goto Monat&lt;br /&gt;
if %1.==11. goto Monat&lt;br /&gt;
if %1.==12. goto Monat&lt;br /&gt;
goto Directory&lt;br /&gt;
:Monat&lt;br /&gt;
if not %2.==. goto Kopieren&lt;br /&gt;
if exist access_log_2006-%1.log del access_log_2006-%1.log&lt;br /&gt;
for %%t in (01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) do call 2006.bat %1 %%t&lt;br /&gt;
:Directory&lt;br /&gt;
echo.&lt;br /&gt;
dir access_log_2006-%1*.*&lt;br /&gt;
goto Ende&lt;br /&gt;
:Kopieren&lt;br /&gt;
if exist access_log_2006-%1-%2. goto Weiter&lt;br /&gt;
if not exist access_log_2006-%1-%2.gz goto Ende&lt;br /&gt;
win-gz.exe access_log_2006-%1-%2.gz&lt;br /&gt;
:Weiter&lt;br /&gt;
type access_log_2006-%1-%2. &amp;gt;&amp;gt;access_log_2006-%1.log&lt;br /&gt;
if %1.==02. if %2.==28. goto Loeschen&lt;br /&gt;
if %1.==04. if %2.==30. goto Loeschen&lt;br /&gt;
if %1.==06. if %2.==30. goto Loeschen&lt;br /&gt;
if %1.==09. if %2.==30. goto Loeschen&lt;br /&gt;
if %1.==11. if %2.==30. goto Loeschen&lt;br /&gt;
if not %2.==31. goto Ende&lt;br /&gt;
:Loeschen&lt;br /&gt;
echo dekomprimierte TagesLogs des kompletten %1. Monats loeschen !?&lt;br /&gt;
echo --- Abbruch mit Strg-C ---&lt;br /&gt;
pause&lt;br /&gt;
del access_log_2006-%1-??.&lt;br /&gt;
:Ende&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Windows Bat Datei für 1und1:&lt;br /&gt;
&lt;br /&gt;
Dateiname: AD.BAT&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
@echo off&lt;br /&gt;
if %1.==. goto Directory&lt;br /&gt;
if %1==1 goto Tag&lt;br /&gt;
if %1==2 goto Tag&lt;br /&gt;
if %1==3 goto Tag&lt;br /&gt;
if %1==4 goto Tag&lt;br /&gt;
if %1==5 goto Tag&lt;br /&gt;
if %1==6 goto Tag&lt;br /&gt;
if %1==7 goto Tag&lt;br /&gt;
if exist access.log.%1.gz win-gz access.log.%1.gz&lt;br /&gt;
if not exist access.log.%1 goto Kopieren&lt;br /&gt;
&lt;br /&gt;
echo.&lt;br /&gt;
echo access.log.%1 ist vorhanden.&lt;br /&gt;
echo access.log.%1.txt und TagesLogs der %1. Kalenderwoche loeschen !?&lt;br /&gt;
echo --- Abbruch mit Strg-C ---&lt;br /&gt;
pause&lt;br /&gt;
if exist access.log.%1.txt del access.log.%1.txt&lt;br /&gt;
for %%t in (1 2 3 4 5 6 7) do if exist access.log.%1.%%t del access.log.%1.%%t&lt;br /&gt;
for %%t in (1 2 3 4 5 6 7) do if exist access.log.%1.%%t.txt del access.log.%1.%%t.txt&lt;br /&gt;
for %%t in (1 2 3 4 5 6 7) do if exist access.log.%1.%%t.gz del access.log.%1.%%t.gz&lt;br /&gt;
goto Directory&lt;br /&gt;
&lt;br /&gt;
:Kopieren&lt;br /&gt;
if exist access.log.%1.txt del access.log.%1.txt&lt;br /&gt;
for %%t in (1 2 3 4 5 6 7) do call ad.bat %%t %1&lt;br /&gt;
goto Directory&lt;br /&gt;
&lt;br /&gt;
:Tag&lt;br /&gt;
if exist access.log.%2.%1 goto Next&lt;br /&gt;
if not exist access.log.%2.%1.gz goto Txt&lt;br /&gt;
win-gz access.log.%2.%1.gz&lt;br /&gt;
if not exist access.log.%2.%1 goto Txt&lt;br /&gt;
del access.log.%2.%1.gz&lt;br /&gt;
goto Next&lt;br /&gt;
:Txt&lt;br /&gt;
if exist access.log.%2.%1.txt type access.log.%2.%1.txt &amp;gt;&amp;gt;access.log.%2.txt&lt;br /&gt;
goto Ende&lt;br /&gt;
:Next&lt;br /&gt;
type access.log.%2.%1 &amp;gt;&amp;gt;access.log.%2.txt&lt;br /&gt;
if exist access.log.%2.%1.txt del access.log.%2.%1.txt&lt;br /&gt;
goto Ende&lt;br /&gt;
&lt;br /&gt;
:Directory&lt;br /&gt;
echo.&lt;br /&gt;
if %1.==. dir access.log.*&lt;br /&gt;
if not %1.==. dir access.log.%1.*&lt;br /&gt;
echo.&lt;br /&gt;
if %1.==. goto Ende&lt;br /&gt;
if exist access.log.%1.txt AccessInfo access.log.%1.txt&lt;br /&gt;
:Ende&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Analyseprogramm für Windows ===&lt;br /&gt;
&lt;br /&gt;
=== Nach Domain Splitten ===&lt;br /&gt;
&lt;br /&gt;
=== Schnellsuche über Linux Terminal ===&lt;br /&gt;
Suche nach Zeilen mit IP&lt;br /&gt;
 grep &amp;#039;IP&amp;#039; /var/log/apache2/access.log &lt;br /&gt;
Zählen dieser Vorkommen&lt;br /&gt;
 grep IP /var/log/apache2/access.log | wc -l&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=Apache_-_Access_Logfiles&amp;diff=21375</id>
		<title>Apache - Access Logfiles</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=Apache_-_Access_Logfiles&amp;diff=21375"/>
		<updated>2016-02-16T17:58:40Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: Die Seite wurde neu angelegt: „== Tipps und Tricks == === Tagesfiles zusammenführen ===  Windows Bat Datei:   === Analyseprogramm für Windows ===  === Nach Domain Splitten ===  === Schnell…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Tipps und Tricks ==&lt;br /&gt;
=== Tagesfiles zusammenführen ===&lt;br /&gt;
&lt;br /&gt;
Windows Bat Datei: &lt;br /&gt;
&lt;br /&gt;
=== Analyseprogramm für Windows ===&lt;br /&gt;
&lt;br /&gt;
=== Nach Domain Splitten ===&lt;br /&gt;
&lt;br /&gt;
=== Schnellsuche über Linux Terminal ===&lt;br /&gt;
Suche nach Zeilen mit IP&lt;br /&gt;
 grep &amp;#039;IP&amp;#039; /var/log/apache2/access.log &lt;br /&gt;
Zählen dieser Vorkommen&lt;br /&gt;
 grep IP /var/log/apache2/access.log | wc -l&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21374</id>
		<title>SimpleXML</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21374"/>
		<updated>2016-02-14T20:04:02Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* Zugriff auf Werte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple XML ist eine PHP Schnittstelle zum Parsen von XML Dateien.&lt;br /&gt;
== Einführung ==&lt;br /&gt;
== Generelles vorgehen ==&lt;br /&gt;
* Einlesen der Daten (z.B. XML-Datei, oder String) in ein &amp;#039;&amp;#039;&amp;#039;SimpleXML Objekt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;xpath Query&amp;#039;&amp;#039;&amp;#039; auf das Objekt anwenden (&amp;#039;&amp;#039;&amp;#039;$result= $sxe-&amp;gt;xpath(&amp;quot;Pfadangabe&amp;quot;)&amp;#039;&amp;#039;&amp;#039;. Man erhält ein &amp;#039;&amp;#039;&amp;#039;Array mit SimpleXML Objekten&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zugriff auf Werte und Attribute der simpleXML Objekte. Oft werden Sie dazu mit foreach in weitere Arrays eingelesen.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML 101 - Empfehlungen zur Arbeit mit simpleXML==&lt;br /&gt;
Quelle: http://stackoverflow.com/questions/1893024/basic-simplexml-working-example Zugriff 7/2013&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;programme&amp;gt; &lt;br /&gt;
  &amp;lt;title&amp;gt;Billy Bushwaka&amp;lt;/title&amp;gt; &lt;br /&gt;
  &amp;lt;episodeNumber&amp;gt;2&amp;lt;/episodeNumber&amp;gt; &lt;br /&gt;
  &amp;lt;description&amp;gt;Billy Bushwaka entertains&amp;lt;/description&amp;gt; &lt;br /&gt;
  &amp;lt;url&amp;gt;play.swf&amp;lt;/url&amp;gt; &lt;br /&gt;
&amp;lt;/programme&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First of all, always &amp;#039;&amp;#039;&amp;#039;name your PHP variables after the node they represent&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 // the root node is ie &amp;lt;programme/&amp;gt;&lt;br /&gt;
 $programme = simplexml_load_file(&amp;quot;local.xml&amp;quot;);&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to children&amp;#039;&amp;#039;&amp;#039; (nodes) as if they were object properties.&lt;br /&gt;
&lt;br /&gt;
 echo $programme-&amp;gt;title;&lt;br /&gt;
If there are &amp;#039;&amp;#039;&amp;#039;multiple children&amp;#039;&amp;#039;&amp;#039; using the same name, you can &amp;#039;&amp;#039;&amp;#039;specify their 0-based position&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 // first &amp;lt;title/&amp;gt; child&lt;br /&gt;
 echo $programme-&amp;gt;title[0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 // create or change the value of the second &amp;lt;title/&amp;gt; child&lt;br /&gt;
 $programme-&amp;gt;title[1] = &amp;#039;Second title&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to attributes&amp;#039;&amp;#039;&amp;#039; as if they were array keys&lt;br /&gt;
&lt;br /&gt;
 // &amp;lt;mynode attr=&amp;quot;attribute value&amp;quot; /&amp;gt;&lt;br /&gt;
 echo $mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
Manchmal muß man Casten (andere Möglichkeiten s.u.)&lt;br /&gt;
 $myVal = (string)$mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XPath&amp;#039;&amp;#039;&amp;#039; always returns an array.&lt;br /&gt;
&lt;br /&gt;
=== More Hints ===&lt;br /&gt;
Quick XML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
 &amp;lt;foo name=&amp;quot;one&amp;quot; game=&amp;quot;lonely&amp;quot;&amp;gt;1&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative xpath:&lt;br /&gt;
&lt;br /&gt;
 $result = $xml-&amp;gt;xpath(&amp;quot;//programme/title&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Quellcode der xml Datei ausgeben ===&lt;br /&gt;
 echo $simplexml-&amp;gt;asXML();&lt;br /&gt;
&lt;br /&gt;
== Snippets ==&lt;br /&gt;
=== XML-Datei von URL holen und in SimpleXML Objekt speichern===&lt;br /&gt;
==== XML Daten von URL holen mit file_get_contents ====&lt;br /&gt;
Hier wird erst nach dem Laden konvertiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$url = &amp;quot;http://username:password@url.com&amp;quot;;&lt;br /&gt;
$xml = file_get_contents($url);&lt;br /&gt;
$data = new SimpleXMLElement($xml);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== XML Daten mit simplexml_load_file ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//einfache Variante&lt;br /&gt;
	function fetch_xml_data($url){&lt;br /&gt;
		$simplexml=simplexml_load_file(rawurlencode(&amp;quot;https://&amp;quot;.$this-&amp;gt;user.&amp;quot;:&amp;quot;.$this-&amp;gt;pw.&amp;#039;@&amp;#039;.$url));&lt;br /&gt;
		$simplexml=simplexml_load_file(&amp;quot;test.xml&amp;quot;);&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manchmal erwartet der Server weitere Header. Dann muß man die Datei auf eine andere Weise mit Context laden (siehe Beispiel Mobile.de und Snippets)&lt;br /&gt;
&lt;br /&gt;
==== Zusätzliche Header mit Stream Context senden ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	// Variante - Einlesen mit Context um diverse Header mit zu schicken&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Zugriff auf Werte ===&lt;br /&gt;
Achtung: Wenn man die Werte über echo ausgibt wandelt sie PHP automatisch um damit sie angezeigt werden. Speichert man Sie hat man nur ein SimpleXMLObjekt um den Wert zu bekommen muß man es Casten.&lt;br /&gt;
&lt;br /&gt;
==== Suche über xPath ====&lt;br /&gt;
xPath kann man als Suchpfad über die XML Hierarchie sehen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;text&amp;lt;/c&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;stuff&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;d&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;code&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/d&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&lt;br /&gt;
$xml = new SimpleXMLElement($string);&lt;br /&gt;
&lt;br /&gt;
/* Search for &amp;lt;a&amp;gt;&amp;lt;b&amp;gt;&amp;lt;c&amp;gt; */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;/a/b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;/a/b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Relative paths also work... */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/a/b/c: text&lt;br /&gt;
/a/b/c: stuff&lt;br /&gt;
b/c: text&lt;br /&gt;
b/c: stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zugriff auf Attribute ===&lt;br /&gt;
====Beispiel 1====&lt;br /&gt;
&lt;br /&gt;
Man lädt mittels foreach alle Attribute des SimpleXML Objektes in ein Array und greift dann darüber zu.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
	$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hinweis: Damit der Wert des Attributes als String ausgegeben wird muß man Casten (string) ansonsten wird ein Objekt zurück gegeben.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 2 ====&lt;br /&gt;
&lt;br /&gt;
Schneller Zugriff auf ein Attribut (Quelle php.net)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$att = &amp;#039;attribueName&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Zugriff :&lt;br /&gt;
$attribute = $element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Casting als String liefert den Wert (ansonsten das Objekt)&lt;br /&gt;
$attribute = (string)$element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Auch verändern des Wertes ist möglich :&lt;br /&gt;
$element-&amp;gt;attributes()-&amp;gt;$att = &amp;#039;New value of the attribute&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 3 ====&lt;br /&gt;
Schneller Zugriff mit Hilfsfunktion (Quelle: php.net)&lt;br /&gt;
&lt;br /&gt;
SimpleXMLElement Object&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
    [@attributes] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 55555&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    [text] =&amp;gt; &amp;quot;hello world&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Funktion:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function xml_attribute($object, $attribute)&lt;br /&gt;
{&lt;br /&gt;
    if(isset($object[$attribute]))&lt;br /&gt;
        return (string) $object[$attribute];&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nutzung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print xml_attribute($xml, &amp;#039;id&amp;#039;); //prints &amp;quot;55555&amp;quot;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 4 ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein Ergebnis aus xPath ist ein Array von $sxe Objekten&amp;#039;&amp;#039;&amp;#039; und kann z.B. so aussehen (aus mobile.de mit var_dump ausgegeben):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(1) {&lt;br /&gt;
  [0]=&amp;gt;&lt;br /&gt;
  object(SimpleXMLElement)#3 (1) {&lt;br /&gt;
    [&amp;quot;@attributes&amp;quot;]=&amp;gt;&lt;br /&gt;
    array(4) {&lt;br /&gt;
      [&amp;quot;total&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;85&amp;quot;&lt;br /&gt;
      [&amp;quot;page-size&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;50&amp;quot;&lt;br /&gt;
      [&amp;quot;current-page&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;1&amp;quot;&lt;br /&gt;
      [&amp;quot;max-pages&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;2&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Darauf ist auch ein direkter Zugriff möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	private function parseResultInfo($sxe){&lt;br /&gt;
		$arrInfo = array();&lt;br /&gt;
		$xpath=&amp;#039;//search:result&amp;#039;; // this works only if you have used the register_namespaces function in the snippets, otherwise you have to register xmlns:search=&amp;quot;http://services.mobile.de/schema/search&amp;quot;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//var_dump($result);&lt;br /&gt;
		$arrInfo[&amp;#039;total&amp;#039;] = (int)$result[0][&amp;#039;total&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;page-size&amp;#039;] = (int)$result[0][&amp;#039;page-size&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;current-page&amp;#039;] = (int)$result[0][&amp;#039;current-page&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;max-pages&amp;#039;] = (int)$result[0][&amp;#039;max-pages&amp;#039;][0];&lt;br /&gt;
		//print_r($arrInfo);&lt;br /&gt;
		return $arrInfo;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kindknoten abfragen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$ns ist der Namespace, der zweite Parameter sagt ob rekursiv gesucht wird.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML und Namespaces ==&lt;br /&gt;
&lt;br /&gt;
=== Einfache Beispiele: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;root xmlns:event=&amp;quot;http://www.webex.com/schemas/2002/06/service/event&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;event:event&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionKey&amp;gt;&amp;lt;/event:sessionKey&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionName&amp;gt;Learn QB in Minutes&amp;lt;/event:sessionName&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionType&amp;gt;9&amp;lt;/event:sessionType&amp;gt;&lt;br /&gt;
        &amp;lt;event:hostWebExID&amp;gt;&amp;lt;/event:hostWebExID&amp;gt;&lt;br /&gt;
        &amp;lt;event:startDate&amp;gt;02/12/2009&amp;lt;/event:startDate&amp;gt;&lt;br /&gt;
        &amp;lt;event:endDate&amp;gt;02/12/2009&amp;lt;/event:endDate&amp;gt;&lt;br /&gt;
        &amp;lt;event:timeZoneID&amp;gt;11&amp;lt;/event:timeZoneID&amp;gt;&lt;br /&gt;
        &amp;lt;event:duration&amp;gt;30&amp;lt;/event:duration&amp;gt;&lt;br /&gt;
        &amp;lt;event:description&amp;gt;&amp;lt;/event:description&amp;gt;&lt;br /&gt;
        &amp;lt;event:status&amp;gt;NOT_INPROGRESS&amp;lt;/event:status&amp;gt;&lt;br /&gt;
        &amp;lt;event:panelists&amp;gt;&amp;lt;/event:panelists&amp;gt;&lt;br /&gt;
        &amp;lt;event:listStatus&amp;gt;PUBLIC&amp;lt;/event:listStatus&amp;gt;&lt;br /&gt;
    &amp;lt;/event:event&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Zugriff ohne Registrierung des Namespace ====&lt;br /&gt;
Dies setzt voraus, daß man sicher ist daß das xml immer den gleichen prefix verwendet.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement($r);&lt;br /&gt;
&lt;br /&gt;
foreach($xml-&amp;gt;xpath(&amp;#039;//event:event&amp;#039;) as $event) {&lt;br /&gt;
 var_export($event-&amp;gt;xpath(&amp;#039;event:sessionKey&amp;#039;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Mit Registrierung der Namespaces ====&lt;br /&gt;
&lt;br /&gt;
You have to register the namespace for each simpleXMLElement object you use.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement($r);&lt;br /&gt;
$xml-&amp;gt;registerXPathNamespace(&amp;#039;e&amp;#039;, &amp;#039;http://www.webex.com/schemas/2002/06/service/event&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
foreach($xml-&amp;gt;xpath(&amp;#039;//e:event&amp;#039;) as $event) {&lt;br /&gt;
    $event-&amp;gt;registerXPathNamespace(&amp;#039;e&amp;#039;, &amp;#039;http://www.webex.com/schemas/2002/06/service/event&amp;#039;);&lt;br /&gt;
    var_export($event-&amp;gt;xpath(&amp;#039;//e:sessionKey&amp;#039;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The namespace should also be declared somewhere in the xml file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;event:event xmlns:event=&amp;quot;http://www.webex.com/schemas/2002/06/service/event&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Umgehen von Namespaces über dom_import ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement($r);&lt;br /&gt;
$xml = dom_import_simplexml($xml);&lt;br /&gt;
$nodelist= $xml-&amp;gt;getElementsByTagName(&amp;#039;event&amp;#039;);  &lt;br /&gt;
for($i = 0; $i &amp;lt; $nodelist-&amp;gt;length; $i++) {&lt;br /&gt;
    $sessions = $nodelist-&amp;gt;item($i)-&amp;gt;getElementsByTagName(&amp;#039;sessionKey&amp;#039;);&lt;br /&gt;
    echo $sessions-&amp;gt;item(0)-&amp;gt;nodeValue;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Funktion um Namespaces zu registrieren ===&lt;br /&gt;
Über eine kleine Funktion kann man sich arbeit sparen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	function register_namespaces($sxe){&lt;br /&gt;
		$arrNs = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
                        echo($prefix.&amp;#039; = &amp;#039;.$ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alle im XML Dokument angegebenen Namespaces werden geparsed und Registriert. So kann man sie in Kurzform ansprechen. (Siehe Beispiel Mobile.de)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;
&amp;lt;book xmlns:chap=&amp;quot;http://example.org/chapter-title&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Book&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 1&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Donec velit. ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 2&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Lorem ipsum ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
EOD;&lt;br /&gt;
&lt;br /&gt;
$sxe = new SimpleXMLElement($xml);&lt;br /&gt;
&lt;br /&gt;
// Zugriff mit Namespace Prefix&lt;br /&gt;
$sxe-&amp;gt;registerXPathNamespace(&amp;#039;c&amp;#039;, &amp;#039;http://example.org/chapter-title&amp;#039;);&lt;br /&gt;
$result = $sxe-&amp;gt;xpath(&amp;#039;//c:title&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
foreach ($result as $title) {&lt;br /&gt;
  echo $title . &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direkter Zugriff im nächsen Beispiel&lt;br /&gt;
=== Beispiel Ebay Timestamp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$response = &amp;lt;&amp;lt;&amp;lt; XMLBLOCK&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;GeteBayOfficialTimeResponse xmlns=&amp;quot;urn:ebay:apis:eBLBaseComponents&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Timestamp&amp;gt;2005-10-28T01:01:04.668Z&amp;lt;/Timestamp&amp;gt;&lt;br /&gt;
        &amp;lt;Ack&amp;gt;Success&amp;lt;/Ack&amp;gt;&lt;br /&gt;
        &amp;lt;Version&amp;gt;429&amp;lt;/Version&amp;gt;&lt;br /&gt;
        &amp;lt;Build&amp;gt;e429_intl_Bundled_1949355_R1&amp;lt;/Build&amp;gt;&lt;br /&gt;
      &amp;lt;/GeteBayOfficialTimeResponse&amp;gt;&lt;br /&gt;
    &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
XMLBLOCK;&lt;br /&gt;
$xml = simplexml_load_string($response);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zugriff auf Timestamp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Time: &amp;quot; . &lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;http://schemas.xmlsoap.org/soap/envelope/&amp;#039;)-&amp;gt;children(&amp;#039;urn:ebay:apis:eBLBaseComponents&amp;#039;)-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp . &amp;quot;\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;soapenv&amp;#039;, true)-&amp;gt;children()-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
===Beispiel Mobile de===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class Mobile{&lt;br /&gt;
	var $arrNs = array();&lt;br /&gt;
&lt;br /&gt;
	public function init(){&lt;br /&gt;
		$this-&amp;gt;action = &amp;quot;&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;user = &amp;quot;username&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;pw = &amp;quot;passwort&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;customerId = &amp;quot;461731&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;clientId = &amp;quot;517329&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;baseUrl = &amp;quot;services.mobile.de/1.0.0/ad/search&amp;quot;;&lt;br /&gt;
		$arrResult = array(); // Contains last Result-List&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function main(){&lt;br /&gt;
		$this-&amp;gt;init();&lt;br /&gt;
		$params = &amp;quot;?customerId=&amp;quot;.$this-&amp;gt;customerId.&amp;quot;&amp;amp;page.size=100&amp;quot;;&lt;br /&gt;
		$url = $this-&amp;gt;baseUrl.$params;&lt;br /&gt;
		&lt;br /&gt;
		$this-&amp;gt;sxe = $this-&amp;gt;fetch_xml_data_ctx($url);&lt;br /&gt;
		$this-&amp;gt;register_namespaces();&lt;br /&gt;
		$this-&amp;gt;parseXML($this-&amp;gt;sxe);&lt;br /&gt;
		//$this-&amp;gt;sxe_print_info();&lt;br /&gt;
		$this-&amp;gt;send_json($this-&amp;gt;arrResult);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
    //Parse XML and create Array&lt;br /&gt;
    private function parseXML($sxe){&lt;br /&gt;
    	$arrAds = array();&lt;br /&gt;
    	unset($this-&amp;gt;arrResult);&lt;br /&gt;
    	// ADS&lt;br /&gt;
    	$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		if(count($result) &amp;gt; 0){&lt;br /&gt;
			foreach ($result as $ad) {&lt;br /&gt;
				// AUTO Parsing&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count] = $this-&amp;gt;sxe_to_array($ad,&amp;#039;ad&amp;#039;);&lt;br /&gt;
				&lt;br /&gt;
				// MANUAL Parsing&lt;br /&gt;
				// Images&lt;br /&gt;
				unset($arrImages);&lt;br /&gt;
				$arrRepresentation = $ad-&amp;gt;xpath(&amp;#039;ad:images/ad:image/ad:representation&amp;#039;);&lt;br /&gt;
				foreach($arrRepresentation as $representation){&lt;br /&gt;
					foreach($representation-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						$arrImages[$key][]=(string)$val;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count][&amp;#039;images&amp;#039;]= $arrImages;		&lt;br /&gt;
				$count += 1;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
    &lt;br /&gt;
    // Stores Attributes and Childs into Array&lt;br /&gt;
    private function sxe_to_array(SimpleXMLElement $sxe,$ns){&lt;br /&gt;
    	$arr = array();&lt;br /&gt;
    	// ATTRIBUTES&lt;br /&gt;
    	$count=0;&lt;br /&gt;
		foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
			$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// CHILDREN&lt;br /&gt;
		$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		foreach($children as $child_name=&amp;gt;$child_node){&lt;br /&gt;
			$arrChild = $this-&amp;gt;sxe_to_array($child_node,$ns);&lt;br /&gt;
			// RESSOURCE CHILD (ns resource)&lt;br /&gt;
			$resources = $this-&amp;gt;getResources($child_node);&lt;br /&gt;
			//print_r($resources);&lt;br /&gt;
			if(!empty($resources)) $arrChild[&amp;#039;resources&amp;#039;] = $resources;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name][&amp;#039;value&amp;#039;]=(string)$child_node;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name] = $arrChild; &lt;br /&gt;
		}&lt;br /&gt;
    	return $arr;&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private function getResources($node){&lt;br /&gt;
		//add &amp;#039;resource&amp;#039; namespace children (mobilede uses this as language descriptors)&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		$ns=&amp;quot;resource&amp;quot;;&lt;br /&gt;
		$arr = array();&lt;br /&gt;
		$children = $node-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		foreach($children as $resource_name=&amp;gt;$resource_node){&lt;br /&gt;
			//print_r($resource_node);&lt;br /&gt;
			$arrResource = $this-&amp;gt;sxe_to_array($resource_node,$ns);&lt;br /&gt;
			$arr[$count][$resource_name][&amp;#039;value&amp;#039;]=(string)$resource_node;&lt;br /&gt;
			//echo((string)$resource_node);&lt;br /&gt;
			//$arr[$count][$resource_name] = $arrResource; &lt;br /&gt;
			$count +=1;&lt;br /&gt;
		}&lt;br /&gt;
		return $arr;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    private function sxe_print_info(){&lt;br /&gt;
    	$sxe = $this-&amp;gt;sxe;&lt;br /&gt;
    	$namespaces = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;##########&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;namespaces:&amp;lt;/strong&amp;gt; &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	foreach($namespaces as $key=&amp;gt;$val){&lt;br /&gt;
    		//echo(&amp;quot;$key : $val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	}&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;Name: &amp;quot;.$sxe-&amp;gt;getName().&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	//Print Ads Info&lt;br /&gt;
		$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $this-&amp;gt;sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//echo(&amp;quot;Number of ads: &amp;quot;.count($result).&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		//ADs&lt;br /&gt;
		foreach ($result as $ad) {&lt;br /&gt;
			$count += 1;&lt;br /&gt;
			echo(&amp;quot;&amp;lt;strong&amp;gt;Ad $count &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);	&lt;br /&gt;
			$ad_children = $ad-&amp;gt;children(&amp;#039;ad&amp;#039;,TRUE);&lt;br /&gt;
			//AD 1st Gen Children&lt;br /&gt;
			if(count($ad_children) &amp;gt; 0){&lt;br /&gt;
				foreach ($ad_children as $ad_child_name=&amp;gt;$ad_child_node){&lt;br /&gt;
					echo(&amp;quot;&amp;lt;strong&amp;gt;Childname: $ad_child_name&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
					// ATTRIBUTES&lt;br /&gt;
					foreach($ad_child_node-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Attributes:&amp;lt;/strong&amp;gt; &amp;quot;);&lt;br /&gt;
						echo(&amp;quot;$key=$val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Children: &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						// Ad 2nd Gen Children&lt;br /&gt;
						foreach($ad_child_node-&amp;gt;children() as $ad_child_name=&amp;gt;$child_node){&lt;br /&gt;
							echo(&amp;quot;Name: $child_name&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			//$adurl = $ad-&amp;gt;{&amp;#039;detail-page&amp;#039;}-&amp;gt;value-&amp;gt;attributes()-&amp;gt;url;&lt;br /&gt;
			//echo(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$adurl.&amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Link&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
   	}&lt;br /&gt;
   	&lt;br /&gt;
	function register_namespaces(){&lt;br /&gt;
		$this-&amp;gt;arrNs = $this-&amp;gt;sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($this-&amp;gt;arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$this-&amp;gt;sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function send_json($arrJSON){&lt;br /&gt;
		// Wir geben der Anfrage ein JSON Objekt-Literal zurück&lt;br /&gt;
		$ajax_return_data = json_encode($arrJSON);&lt;br /&gt;
		header(&amp;#039;Cache-Control: no-cache, must-revalidate&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Pragma: no-cache&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Content-Length: &amp;#039;.strlen($ajax_return_data));&lt;br /&gt;
		header(&amp;#039;Content-Type: application/json; charset=UTF-8&amp;#039;);&lt;br /&gt;
		echo $ajax_return_data;&lt;br /&gt;
		exit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
$mobile = new Mobile();&lt;br /&gt;
$mobile-&amp;gt;main();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21373</id>
		<title>SimpleXML</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21373"/>
		<updated>2016-02-12T10:31:32Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* SimpleXML und Namespaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple XML ist eine PHP Schnittstelle zum Parsen von XML Dateien.&lt;br /&gt;
== Einführung ==&lt;br /&gt;
== Generelles vorgehen ==&lt;br /&gt;
* Einlesen der Daten (z.B. XML-Datei, oder String) in ein &amp;#039;&amp;#039;&amp;#039;SimpleXML Objekt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;xpath Query&amp;#039;&amp;#039;&amp;#039; auf das Objekt anwenden (&amp;#039;&amp;#039;&amp;#039;$result= $sxe-&amp;gt;xpath(&amp;quot;Pfadangabe&amp;quot;)&amp;#039;&amp;#039;&amp;#039;. Man erhält ein &amp;#039;&amp;#039;&amp;#039;Array mit SimpleXML Objekten&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zugriff auf Werte und Attribute der simpleXML Objekte. Oft werden Sie dazu mit foreach in weitere Arrays eingelesen.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML 101 - Empfehlungen zur Arbeit mit simpleXML==&lt;br /&gt;
Quelle: http://stackoverflow.com/questions/1893024/basic-simplexml-working-example Zugriff 7/2013&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;programme&amp;gt; &lt;br /&gt;
  &amp;lt;title&amp;gt;Billy Bushwaka&amp;lt;/title&amp;gt; &lt;br /&gt;
  &amp;lt;episodeNumber&amp;gt;2&amp;lt;/episodeNumber&amp;gt; &lt;br /&gt;
  &amp;lt;description&amp;gt;Billy Bushwaka entertains&amp;lt;/description&amp;gt; &lt;br /&gt;
  &amp;lt;url&amp;gt;play.swf&amp;lt;/url&amp;gt; &lt;br /&gt;
&amp;lt;/programme&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First of all, always &amp;#039;&amp;#039;&amp;#039;name your PHP variables after the node they represent&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 // the root node is ie &amp;lt;programme/&amp;gt;&lt;br /&gt;
 $programme = simplexml_load_file(&amp;quot;local.xml&amp;quot;);&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to children&amp;#039;&amp;#039;&amp;#039; (nodes) as if they were object properties.&lt;br /&gt;
&lt;br /&gt;
 echo $programme-&amp;gt;title;&lt;br /&gt;
If there are &amp;#039;&amp;#039;&amp;#039;multiple children&amp;#039;&amp;#039;&amp;#039; using the same name, you can &amp;#039;&amp;#039;&amp;#039;specify their 0-based position&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 // first &amp;lt;title/&amp;gt; child&lt;br /&gt;
 echo $programme-&amp;gt;title[0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 // create or change the value of the second &amp;lt;title/&amp;gt; child&lt;br /&gt;
 $programme-&amp;gt;title[1] = &amp;#039;Second title&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to attributes&amp;#039;&amp;#039;&amp;#039; as if they were array keys&lt;br /&gt;
&lt;br /&gt;
 // &amp;lt;mynode attr=&amp;quot;attribute value&amp;quot; /&amp;gt;&lt;br /&gt;
 echo $mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
Manchmal muß man Casten (andere Möglichkeiten s.u.)&lt;br /&gt;
 $myVal = (string)$mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XPath&amp;#039;&amp;#039;&amp;#039; always returns an array.&lt;br /&gt;
&lt;br /&gt;
=== More Hints ===&lt;br /&gt;
Quick XML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
 &amp;lt;foo name=&amp;quot;one&amp;quot; game=&amp;quot;lonely&amp;quot;&amp;gt;1&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative xpath:&lt;br /&gt;
&lt;br /&gt;
 $result = $xml-&amp;gt;xpath(&amp;quot;//programme/title&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Quellcode der xml Datei ausgeben ===&lt;br /&gt;
 echo $simplexml-&amp;gt;asXML();&lt;br /&gt;
&lt;br /&gt;
== Snippets ==&lt;br /&gt;
=== XML-Datei von URL holen und in SimpleXML Objekt speichern===&lt;br /&gt;
==== XML Daten von URL holen mit file_get_contents ====&lt;br /&gt;
Hier wird erst nach dem Laden konvertiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$url = &amp;quot;http://username:password@url.com&amp;quot;;&lt;br /&gt;
$xml = file_get_contents($url);&lt;br /&gt;
$data = new SimpleXMLElement($xml);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== XML Daten mit simplexml_load_file ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//einfache Variante&lt;br /&gt;
	function fetch_xml_data($url){&lt;br /&gt;
		$simplexml=simplexml_load_file(rawurlencode(&amp;quot;https://&amp;quot;.$this-&amp;gt;user.&amp;quot;:&amp;quot;.$this-&amp;gt;pw.&amp;#039;@&amp;#039;.$url));&lt;br /&gt;
		$simplexml=simplexml_load_file(&amp;quot;test.xml&amp;quot;);&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manchmal erwartet der Server weitere Header. Dann muß man die Datei auf eine andere Weise mit Context laden (siehe Beispiel Mobile.de und Snippets)&lt;br /&gt;
&lt;br /&gt;
==== Zusätzliche Header mit Stream Context senden ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	// Variante - Einlesen mit Context um diverse Header mit zu schicken&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Zugriff auf Werte ===&lt;br /&gt;
&lt;br /&gt;
==== Suche über xPath ====&lt;br /&gt;
xPath kann man als Suchpfad über die XML Hierarchie sehen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;text&amp;lt;/c&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;stuff&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;d&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;code&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/d&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&lt;br /&gt;
$xml = new SimpleXMLElement($string);&lt;br /&gt;
&lt;br /&gt;
/* Search for &amp;lt;a&amp;gt;&amp;lt;b&amp;gt;&amp;lt;c&amp;gt; */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;/a/b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;/a/b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Relative paths also work... */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/a/b/c: text&lt;br /&gt;
/a/b/c: stuff&lt;br /&gt;
b/c: text&lt;br /&gt;
b/c: stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zugriff auf Attribute ===&lt;br /&gt;
====Beispiel 1====&lt;br /&gt;
&lt;br /&gt;
Man lädt mittels foreach alle Attribute des SimpleXML Objektes in ein Array und greift dann darüber zu.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
	$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hinweis: Damit der Wert des Attributes als String ausgegeben wird muß man Casten (string) ansonsten wird ein Objekt zurück gegeben.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 2 ====&lt;br /&gt;
&lt;br /&gt;
Schneller Zugriff auf ein Attribut (Quelle php.net)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$att = &amp;#039;attribueName&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Zugriff :&lt;br /&gt;
$attribute = $element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Casting als String liefert den Wert (ansonsten das Objekt)&lt;br /&gt;
$attribute = (string)$element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Auch verändern des Wertes ist möglich :&lt;br /&gt;
$element-&amp;gt;attributes()-&amp;gt;$att = &amp;#039;New value of the attribute&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 3 ====&lt;br /&gt;
Schneller Zugriff mit Hilfsfunktion (Quelle: php.net)&lt;br /&gt;
&lt;br /&gt;
SimpleXMLElement Object&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
    [@attributes] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 55555&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    [text] =&amp;gt; &amp;quot;hello world&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Funktion:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function xml_attribute($object, $attribute)&lt;br /&gt;
{&lt;br /&gt;
    if(isset($object[$attribute]))&lt;br /&gt;
        return (string) $object[$attribute];&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nutzung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print xml_attribute($xml, &amp;#039;id&amp;#039;); //prints &amp;quot;55555&amp;quot;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 4 ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein Ergebnis aus xPath ist ein Array von $sxe Objekten&amp;#039;&amp;#039;&amp;#039; und kann z.B. so aussehen (aus mobile.de mit var_dump ausgegeben):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(1) {&lt;br /&gt;
  [0]=&amp;gt;&lt;br /&gt;
  object(SimpleXMLElement)#3 (1) {&lt;br /&gt;
    [&amp;quot;@attributes&amp;quot;]=&amp;gt;&lt;br /&gt;
    array(4) {&lt;br /&gt;
      [&amp;quot;total&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;85&amp;quot;&lt;br /&gt;
      [&amp;quot;page-size&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;50&amp;quot;&lt;br /&gt;
      [&amp;quot;current-page&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;1&amp;quot;&lt;br /&gt;
      [&amp;quot;max-pages&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;2&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Darauf ist auch ein direkter Zugriff möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	private function parseResultInfo($sxe){&lt;br /&gt;
		$arrInfo = array();&lt;br /&gt;
		$xpath=&amp;#039;//search:result&amp;#039;; // this works only if you have used the register_namespaces function in the snippets, otherwise you have to register xmlns:search=&amp;quot;http://services.mobile.de/schema/search&amp;quot;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//var_dump($result);&lt;br /&gt;
		$arrInfo[&amp;#039;total&amp;#039;] = (int)$result[0][&amp;#039;total&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;page-size&amp;#039;] = (int)$result[0][&amp;#039;page-size&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;current-page&amp;#039;] = (int)$result[0][&amp;#039;current-page&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;max-pages&amp;#039;] = (int)$result[0][&amp;#039;max-pages&amp;#039;][0];&lt;br /&gt;
		//print_r($arrInfo);&lt;br /&gt;
		return $arrInfo;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kindknoten abfragen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$ns ist der Namespace, der zweite Parameter sagt ob rekursiv gesucht wird.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML und Namespaces ==&lt;br /&gt;
&lt;br /&gt;
=== Einfache Beispiele: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;root xmlns:event=&amp;quot;http://www.webex.com/schemas/2002/06/service/event&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;event:event&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionKey&amp;gt;&amp;lt;/event:sessionKey&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionName&amp;gt;Learn QB in Minutes&amp;lt;/event:sessionName&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionType&amp;gt;9&amp;lt;/event:sessionType&amp;gt;&lt;br /&gt;
        &amp;lt;event:hostWebExID&amp;gt;&amp;lt;/event:hostWebExID&amp;gt;&lt;br /&gt;
        &amp;lt;event:startDate&amp;gt;02/12/2009&amp;lt;/event:startDate&amp;gt;&lt;br /&gt;
        &amp;lt;event:endDate&amp;gt;02/12/2009&amp;lt;/event:endDate&amp;gt;&lt;br /&gt;
        &amp;lt;event:timeZoneID&amp;gt;11&amp;lt;/event:timeZoneID&amp;gt;&lt;br /&gt;
        &amp;lt;event:duration&amp;gt;30&amp;lt;/event:duration&amp;gt;&lt;br /&gt;
        &amp;lt;event:description&amp;gt;&amp;lt;/event:description&amp;gt;&lt;br /&gt;
        &amp;lt;event:status&amp;gt;NOT_INPROGRESS&amp;lt;/event:status&amp;gt;&lt;br /&gt;
        &amp;lt;event:panelists&amp;gt;&amp;lt;/event:panelists&amp;gt;&lt;br /&gt;
        &amp;lt;event:listStatus&amp;gt;PUBLIC&amp;lt;/event:listStatus&amp;gt;&lt;br /&gt;
    &amp;lt;/event:event&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Zugriff ohne Registrierung des Namespace ====&lt;br /&gt;
Dies setzt voraus, daß man sicher ist daß das xml immer den gleichen prefix verwendet.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement($r);&lt;br /&gt;
&lt;br /&gt;
foreach($xml-&amp;gt;xpath(&amp;#039;//event:event&amp;#039;) as $event) {&lt;br /&gt;
 var_export($event-&amp;gt;xpath(&amp;#039;event:sessionKey&amp;#039;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Mit Registrierung der Namespaces ====&lt;br /&gt;
&lt;br /&gt;
You have to register the namespace for each simpleXMLElement object you use.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement($r);&lt;br /&gt;
$xml-&amp;gt;registerXPathNamespace(&amp;#039;e&amp;#039;, &amp;#039;http://www.webex.com/schemas/2002/06/service/event&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
foreach($xml-&amp;gt;xpath(&amp;#039;//e:event&amp;#039;) as $event) {&lt;br /&gt;
    $event-&amp;gt;registerXPathNamespace(&amp;#039;e&amp;#039;, &amp;#039;http://www.webex.com/schemas/2002/06/service/event&amp;#039;);&lt;br /&gt;
    var_export($event-&amp;gt;xpath(&amp;#039;//e:sessionKey&amp;#039;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
The namespace should also be declared somewhere in the xml file.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;event:event xmlns:event=&amp;quot;http://www.webex.com/schemas/2002/06/service/event&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Umgehen von Namespaces über dom_import ====&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement($r);&lt;br /&gt;
$xml = dom_import_simplexml($xml);&lt;br /&gt;
$nodelist= $xml-&amp;gt;getElementsByTagName(&amp;#039;event&amp;#039;);  &lt;br /&gt;
for($i = 0; $i &amp;lt; $nodelist-&amp;gt;length; $i++) {&lt;br /&gt;
    $sessions = $nodelist-&amp;gt;item($i)-&amp;gt;getElementsByTagName(&amp;#039;sessionKey&amp;#039;);&lt;br /&gt;
    echo $sessions-&amp;gt;item(0)-&amp;gt;nodeValue;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Funktion um Namespaces zu registrieren ===&lt;br /&gt;
Über eine kleine Funktion kann man sich arbeit sparen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	function register_namespaces($sxe){&lt;br /&gt;
		$arrNs = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
                        echo($prefix.&amp;#039; = &amp;#039;.$ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alle im XML Dokument angegebenen Namespaces werden geparsed und Registriert. So kann man sie in Kurzform ansprechen. (Siehe Beispiel Mobile.de)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;
&amp;lt;book xmlns:chap=&amp;quot;http://example.org/chapter-title&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Book&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 1&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Donec velit. ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 2&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Lorem ipsum ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
EOD;&lt;br /&gt;
&lt;br /&gt;
$sxe = new SimpleXMLElement($xml);&lt;br /&gt;
&lt;br /&gt;
// Zugriff mit Namespace Prefix&lt;br /&gt;
$sxe-&amp;gt;registerXPathNamespace(&amp;#039;c&amp;#039;, &amp;#039;http://example.org/chapter-title&amp;#039;);&lt;br /&gt;
$result = $sxe-&amp;gt;xpath(&amp;#039;//c:title&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
foreach ($result as $title) {&lt;br /&gt;
  echo $title . &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direkter Zugriff im nächsen Beispiel&lt;br /&gt;
=== Beispiel Ebay Timestamp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$response = &amp;lt;&amp;lt;&amp;lt; XMLBLOCK&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;GeteBayOfficialTimeResponse xmlns=&amp;quot;urn:ebay:apis:eBLBaseComponents&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Timestamp&amp;gt;2005-10-28T01:01:04.668Z&amp;lt;/Timestamp&amp;gt;&lt;br /&gt;
        &amp;lt;Ack&amp;gt;Success&amp;lt;/Ack&amp;gt;&lt;br /&gt;
        &amp;lt;Version&amp;gt;429&amp;lt;/Version&amp;gt;&lt;br /&gt;
        &amp;lt;Build&amp;gt;e429_intl_Bundled_1949355_R1&amp;lt;/Build&amp;gt;&lt;br /&gt;
      &amp;lt;/GeteBayOfficialTimeResponse&amp;gt;&lt;br /&gt;
    &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
XMLBLOCK;&lt;br /&gt;
$xml = simplexml_load_string($response);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zugriff auf Timestamp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Time: &amp;quot; . &lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;http://schemas.xmlsoap.org/soap/envelope/&amp;#039;)-&amp;gt;children(&amp;#039;urn:ebay:apis:eBLBaseComponents&amp;#039;)-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp . &amp;quot;\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;soapenv&amp;#039;, true)-&amp;gt;children()-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
===Beispiel Mobile de===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class Mobile{&lt;br /&gt;
	var $arrNs = array();&lt;br /&gt;
&lt;br /&gt;
	public function init(){&lt;br /&gt;
		$this-&amp;gt;action = &amp;quot;&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;user = &amp;quot;username&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;pw = &amp;quot;passwort&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;customerId = &amp;quot;461731&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;clientId = &amp;quot;517329&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;baseUrl = &amp;quot;services.mobile.de/1.0.0/ad/search&amp;quot;;&lt;br /&gt;
		$arrResult = array(); // Contains last Result-List&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function main(){&lt;br /&gt;
		$this-&amp;gt;init();&lt;br /&gt;
		$params = &amp;quot;?customerId=&amp;quot;.$this-&amp;gt;customerId.&amp;quot;&amp;amp;page.size=100&amp;quot;;&lt;br /&gt;
		$url = $this-&amp;gt;baseUrl.$params;&lt;br /&gt;
		&lt;br /&gt;
		$this-&amp;gt;sxe = $this-&amp;gt;fetch_xml_data_ctx($url);&lt;br /&gt;
		$this-&amp;gt;register_namespaces();&lt;br /&gt;
		$this-&amp;gt;parseXML($this-&amp;gt;sxe);&lt;br /&gt;
		//$this-&amp;gt;sxe_print_info();&lt;br /&gt;
		$this-&amp;gt;send_json($this-&amp;gt;arrResult);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
    //Parse XML and create Array&lt;br /&gt;
    private function parseXML($sxe){&lt;br /&gt;
    	$arrAds = array();&lt;br /&gt;
    	unset($this-&amp;gt;arrResult);&lt;br /&gt;
    	// ADS&lt;br /&gt;
    	$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		if(count($result) &amp;gt; 0){&lt;br /&gt;
			foreach ($result as $ad) {&lt;br /&gt;
				// AUTO Parsing&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count] = $this-&amp;gt;sxe_to_array($ad,&amp;#039;ad&amp;#039;);&lt;br /&gt;
				&lt;br /&gt;
				// MANUAL Parsing&lt;br /&gt;
				// Images&lt;br /&gt;
				unset($arrImages);&lt;br /&gt;
				$arrRepresentation = $ad-&amp;gt;xpath(&amp;#039;ad:images/ad:image/ad:representation&amp;#039;);&lt;br /&gt;
				foreach($arrRepresentation as $representation){&lt;br /&gt;
					foreach($representation-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						$arrImages[$key][]=(string)$val;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count][&amp;#039;images&amp;#039;]= $arrImages;		&lt;br /&gt;
				$count += 1;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
    &lt;br /&gt;
    // Stores Attributes and Childs into Array&lt;br /&gt;
    private function sxe_to_array(SimpleXMLElement $sxe,$ns){&lt;br /&gt;
    	$arr = array();&lt;br /&gt;
    	// ATTRIBUTES&lt;br /&gt;
    	$count=0;&lt;br /&gt;
		foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
			$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// CHILDREN&lt;br /&gt;
		$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		foreach($children as $child_name=&amp;gt;$child_node){&lt;br /&gt;
			$arrChild = $this-&amp;gt;sxe_to_array($child_node,$ns);&lt;br /&gt;
			// RESSOURCE CHILD (ns resource)&lt;br /&gt;
			$resources = $this-&amp;gt;getResources($child_node);&lt;br /&gt;
			//print_r($resources);&lt;br /&gt;
			if(!empty($resources)) $arrChild[&amp;#039;resources&amp;#039;] = $resources;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name][&amp;#039;value&amp;#039;]=(string)$child_node;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name] = $arrChild; &lt;br /&gt;
		}&lt;br /&gt;
    	return $arr;&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private function getResources($node){&lt;br /&gt;
		//add &amp;#039;resource&amp;#039; namespace children (mobilede uses this as language descriptors)&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		$ns=&amp;quot;resource&amp;quot;;&lt;br /&gt;
		$arr = array();&lt;br /&gt;
		$children = $node-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		foreach($children as $resource_name=&amp;gt;$resource_node){&lt;br /&gt;
			//print_r($resource_node);&lt;br /&gt;
			$arrResource = $this-&amp;gt;sxe_to_array($resource_node,$ns);&lt;br /&gt;
			$arr[$count][$resource_name][&amp;#039;value&amp;#039;]=(string)$resource_node;&lt;br /&gt;
			//echo((string)$resource_node);&lt;br /&gt;
			//$arr[$count][$resource_name] = $arrResource; &lt;br /&gt;
			$count +=1;&lt;br /&gt;
		}&lt;br /&gt;
		return $arr;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    private function sxe_print_info(){&lt;br /&gt;
    	$sxe = $this-&amp;gt;sxe;&lt;br /&gt;
    	$namespaces = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;##########&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;namespaces:&amp;lt;/strong&amp;gt; &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	foreach($namespaces as $key=&amp;gt;$val){&lt;br /&gt;
    		//echo(&amp;quot;$key : $val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	}&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;Name: &amp;quot;.$sxe-&amp;gt;getName().&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	//Print Ads Info&lt;br /&gt;
		$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $this-&amp;gt;sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//echo(&amp;quot;Number of ads: &amp;quot;.count($result).&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		//ADs&lt;br /&gt;
		foreach ($result as $ad) {&lt;br /&gt;
			$count += 1;&lt;br /&gt;
			echo(&amp;quot;&amp;lt;strong&amp;gt;Ad $count &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);	&lt;br /&gt;
			$ad_children = $ad-&amp;gt;children(&amp;#039;ad&amp;#039;,TRUE);&lt;br /&gt;
			//AD 1st Gen Children&lt;br /&gt;
			if(count($ad_children) &amp;gt; 0){&lt;br /&gt;
				foreach ($ad_children as $ad_child_name=&amp;gt;$ad_child_node){&lt;br /&gt;
					echo(&amp;quot;&amp;lt;strong&amp;gt;Childname: $ad_child_name&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
					// ATTRIBUTES&lt;br /&gt;
					foreach($ad_child_node-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Attributes:&amp;lt;/strong&amp;gt; &amp;quot;);&lt;br /&gt;
						echo(&amp;quot;$key=$val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Children: &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						// Ad 2nd Gen Children&lt;br /&gt;
						foreach($ad_child_node-&amp;gt;children() as $ad_child_name=&amp;gt;$child_node){&lt;br /&gt;
							echo(&amp;quot;Name: $child_name&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			//$adurl = $ad-&amp;gt;{&amp;#039;detail-page&amp;#039;}-&amp;gt;value-&amp;gt;attributes()-&amp;gt;url;&lt;br /&gt;
			//echo(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$adurl.&amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Link&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
   	}&lt;br /&gt;
   	&lt;br /&gt;
	function register_namespaces(){&lt;br /&gt;
		$this-&amp;gt;arrNs = $this-&amp;gt;sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($this-&amp;gt;arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$this-&amp;gt;sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function send_json($arrJSON){&lt;br /&gt;
		// Wir geben der Anfrage ein JSON Objekt-Literal zurück&lt;br /&gt;
		$ajax_return_data = json_encode($arrJSON);&lt;br /&gt;
		header(&amp;#039;Cache-Control: no-cache, must-revalidate&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Pragma: no-cache&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Content-Length: &amp;#039;.strlen($ajax_return_data));&lt;br /&gt;
		header(&amp;#039;Content-Type: application/json; charset=UTF-8&amp;#039;);&lt;br /&gt;
		echo $ajax_return_data;&lt;br /&gt;
		exit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
$mobile = new Mobile();&lt;br /&gt;
$mobile-&amp;gt;main();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21372</id>
		<title>SimpleXML</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21372"/>
		<updated>2016-02-12T10:27:34Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* Zugriff ohne Registrierung des Namespace */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple XML ist eine PHP Schnittstelle zum Parsen von XML Dateien.&lt;br /&gt;
== Einführung ==&lt;br /&gt;
== Generelles vorgehen ==&lt;br /&gt;
* Einlesen der Daten (z.B. XML-Datei, oder String) in ein &amp;#039;&amp;#039;&amp;#039;SimpleXML Objekt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;xpath Query&amp;#039;&amp;#039;&amp;#039; auf das Objekt anwenden (&amp;#039;&amp;#039;&amp;#039;$result= $sxe-&amp;gt;xpath(&amp;quot;Pfadangabe&amp;quot;)&amp;#039;&amp;#039;&amp;#039;. Man erhält ein &amp;#039;&amp;#039;&amp;#039;Array mit SimpleXML Objekten&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zugriff auf Werte und Attribute der simpleXML Objekte. Oft werden Sie dazu mit foreach in weitere Arrays eingelesen.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML 101 - Empfehlungen zur Arbeit mit simpleXML==&lt;br /&gt;
Quelle: http://stackoverflow.com/questions/1893024/basic-simplexml-working-example Zugriff 7/2013&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;programme&amp;gt; &lt;br /&gt;
  &amp;lt;title&amp;gt;Billy Bushwaka&amp;lt;/title&amp;gt; &lt;br /&gt;
  &amp;lt;episodeNumber&amp;gt;2&amp;lt;/episodeNumber&amp;gt; &lt;br /&gt;
  &amp;lt;description&amp;gt;Billy Bushwaka entertains&amp;lt;/description&amp;gt; &lt;br /&gt;
  &amp;lt;url&amp;gt;play.swf&amp;lt;/url&amp;gt; &lt;br /&gt;
&amp;lt;/programme&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First of all, always &amp;#039;&amp;#039;&amp;#039;name your PHP variables after the node they represent&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 // the root node is ie &amp;lt;programme/&amp;gt;&lt;br /&gt;
 $programme = simplexml_load_file(&amp;quot;local.xml&amp;quot;);&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to children&amp;#039;&amp;#039;&amp;#039; (nodes) as if they were object properties.&lt;br /&gt;
&lt;br /&gt;
 echo $programme-&amp;gt;title;&lt;br /&gt;
If there are &amp;#039;&amp;#039;&amp;#039;multiple children&amp;#039;&amp;#039;&amp;#039; using the same name, you can &amp;#039;&amp;#039;&amp;#039;specify their 0-based position&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 // first &amp;lt;title/&amp;gt; child&lt;br /&gt;
 echo $programme-&amp;gt;title[0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 // create or change the value of the second &amp;lt;title/&amp;gt; child&lt;br /&gt;
 $programme-&amp;gt;title[1] = &amp;#039;Second title&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to attributes&amp;#039;&amp;#039;&amp;#039; as if they were array keys&lt;br /&gt;
&lt;br /&gt;
 // &amp;lt;mynode attr=&amp;quot;attribute value&amp;quot; /&amp;gt;&lt;br /&gt;
 echo $mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
Manchmal muß man Casten (andere Möglichkeiten s.u.)&lt;br /&gt;
 $myVal = (string)$mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XPath&amp;#039;&amp;#039;&amp;#039; always returns an array.&lt;br /&gt;
&lt;br /&gt;
=== More Hints ===&lt;br /&gt;
Quick XML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
 &amp;lt;foo name=&amp;quot;one&amp;quot; game=&amp;quot;lonely&amp;quot;&amp;gt;1&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative xpath:&lt;br /&gt;
&lt;br /&gt;
 $result = $xml-&amp;gt;xpath(&amp;quot;//programme/title&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Quellcode der xml Datei ausgeben ===&lt;br /&gt;
 echo $simplexml-&amp;gt;asXML();&lt;br /&gt;
&lt;br /&gt;
== Snippets ==&lt;br /&gt;
=== XML-Datei von URL holen und in SimpleXML Objekt speichern===&lt;br /&gt;
==== XML Daten von URL holen mit file_get_contents ====&lt;br /&gt;
Hier wird erst nach dem Laden konvertiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$url = &amp;quot;http://username:password@url.com&amp;quot;;&lt;br /&gt;
$xml = file_get_contents($url);&lt;br /&gt;
$data = new SimpleXMLElement($xml);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== XML Daten mit simplexml_load_file ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//einfache Variante&lt;br /&gt;
	function fetch_xml_data($url){&lt;br /&gt;
		$simplexml=simplexml_load_file(rawurlencode(&amp;quot;https://&amp;quot;.$this-&amp;gt;user.&amp;quot;:&amp;quot;.$this-&amp;gt;pw.&amp;#039;@&amp;#039;.$url));&lt;br /&gt;
		$simplexml=simplexml_load_file(&amp;quot;test.xml&amp;quot;);&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manchmal erwartet der Server weitere Header. Dann muß man die Datei auf eine andere Weise mit Context laden (siehe Beispiel Mobile.de und Snippets)&lt;br /&gt;
&lt;br /&gt;
==== Zusätzliche Header mit Stream Context senden ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	// Variante - Einlesen mit Context um diverse Header mit zu schicken&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Zugriff auf Werte ===&lt;br /&gt;
&lt;br /&gt;
==== Suche über xPath ====&lt;br /&gt;
xPath kann man als Suchpfad über die XML Hierarchie sehen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;text&amp;lt;/c&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;stuff&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;d&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;code&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/d&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&lt;br /&gt;
$xml = new SimpleXMLElement($string);&lt;br /&gt;
&lt;br /&gt;
/* Search for &amp;lt;a&amp;gt;&amp;lt;b&amp;gt;&amp;lt;c&amp;gt; */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;/a/b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;/a/b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Relative paths also work... */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/a/b/c: text&lt;br /&gt;
/a/b/c: stuff&lt;br /&gt;
b/c: text&lt;br /&gt;
b/c: stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zugriff auf Attribute ===&lt;br /&gt;
====Beispiel 1====&lt;br /&gt;
&lt;br /&gt;
Man lädt mittels foreach alle Attribute des SimpleXML Objektes in ein Array und greift dann darüber zu.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
	$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hinweis: Damit der Wert des Attributes als String ausgegeben wird muß man Casten (string) ansonsten wird ein Objekt zurück gegeben.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 2 ====&lt;br /&gt;
&lt;br /&gt;
Schneller Zugriff auf ein Attribut (Quelle php.net)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$att = &amp;#039;attribueName&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Zugriff :&lt;br /&gt;
$attribute = $element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Casting als String liefert den Wert (ansonsten das Objekt)&lt;br /&gt;
$attribute = (string)$element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Auch verändern des Wertes ist möglich :&lt;br /&gt;
$element-&amp;gt;attributes()-&amp;gt;$att = &amp;#039;New value of the attribute&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 3 ====&lt;br /&gt;
Schneller Zugriff mit Hilfsfunktion (Quelle: php.net)&lt;br /&gt;
&lt;br /&gt;
SimpleXMLElement Object&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
    [@attributes] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 55555&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    [text] =&amp;gt; &amp;quot;hello world&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Funktion:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function xml_attribute($object, $attribute)&lt;br /&gt;
{&lt;br /&gt;
    if(isset($object[$attribute]))&lt;br /&gt;
        return (string) $object[$attribute];&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nutzung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print xml_attribute($xml, &amp;#039;id&amp;#039;); //prints &amp;quot;55555&amp;quot;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 4 ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein Ergebnis aus xPath ist ein Array von $sxe Objekten&amp;#039;&amp;#039;&amp;#039; und kann z.B. so aussehen (aus mobile.de mit var_dump ausgegeben):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(1) {&lt;br /&gt;
  [0]=&amp;gt;&lt;br /&gt;
  object(SimpleXMLElement)#3 (1) {&lt;br /&gt;
    [&amp;quot;@attributes&amp;quot;]=&amp;gt;&lt;br /&gt;
    array(4) {&lt;br /&gt;
      [&amp;quot;total&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;85&amp;quot;&lt;br /&gt;
      [&amp;quot;page-size&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;50&amp;quot;&lt;br /&gt;
      [&amp;quot;current-page&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;1&amp;quot;&lt;br /&gt;
      [&amp;quot;max-pages&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;2&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Darauf ist auch ein direkter Zugriff möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	private function parseResultInfo($sxe){&lt;br /&gt;
		$arrInfo = array();&lt;br /&gt;
		$xpath=&amp;#039;//search:result&amp;#039;; // this works only if you have used the register_namespaces function in the snippets, otherwise you have to register xmlns:search=&amp;quot;http://services.mobile.de/schema/search&amp;quot;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//var_dump($result);&lt;br /&gt;
		$arrInfo[&amp;#039;total&amp;#039;] = (int)$result[0][&amp;#039;total&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;page-size&amp;#039;] = (int)$result[0][&amp;#039;page-size&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;current-page&amp;#039;] = (int)$result[0][&amp;#039;current-page&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;max-pages&amp;#039;] = (int)$result[0][&amp;#039;max-pages&amp;#039;][0];&lt;br /&gt;
		//print_r($arrInfo);&lt;br /&gt;
		return $arrInfo;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kindknoten abfragen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$ns ist der Namespace, der zweite Parameter sagt ob rekursiv gesucht wird.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML und Namespaces ==&lt;br /&gt;
&lt;br /&gt;
=== Einfache Beispiele: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;root xmlns:event=&amp;quot;http://www.webex.com/schemas/2002/06/service/event&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;event:event&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionKey&amp;gt;&amp;lt;/event:sessionKey&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionName&amp;gt;Learn QB in Minutes&amp;lt;/event:sessionName&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionType&amp;gt;9&amp;lt;/event:sessionType&amp;gt;&lt;br /&gt;
        &amp;lt;event:hostWebExID&amp;gt;&amp;lt;/event:hostWebExID&amp;gt;&lt;br /&gt;
        &amp;lt;event:startDate&amp;gt;02/12/2009&amp;lt;/event:startDate&amp;gt;&lt;br /&gt;
        &amp;lt;event:endDate&amp;gt;02/12/2009&amp;lt;/event:endDate&amp;gt;&lt;br /&gt;
        &amp;lt;event:timeZoneID&amp;gt;11&amp;lt;/event:timeZoneID&amp;gt;&lt;br /&gt;
        &amp;lt;event:duration&amp;gt;30&amp;lt;/event:duration&amp;gt;&lt;br /&gt;
        &amp;lt;event:description&amp;gt;&amp;lt;/event:description&amp;gt;&lt;br /&gt;
        &amp;lt;event:status&amp;gt;NOT_INPROGRESS&amp;lt;/event:status&amp;gt;&lt;br /&gt;
        &amp;lt;event:panelists&amp;gt;&amp;lt;/event:panelists&amp;gt;&lt;br /&gt;
        &amp;lt;event:listStatus&amp;gt;PUBLIC&amp;lt;/event:listStatus&amp;gt;&lt;br /&gt;
    &amp;lt;/event:event&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Zugriff ohne Registrierung des Namespace ====&lt;br /&gt;
Dies setzt voraus, daß man sicher ist daß das xml immer den gleichen prefix verwendet.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement($r);&lt;br /&gt;
&lt;br /&gt;
foreach($xml-&amp;gt;xpath(&amp;#039;//event:event&amp;#039;) as $event) {&lt;br /&gt;
 var_export($event-&amp;gt;xpath(&amp;#039;event:sessionKey&amp;#039;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Namespaces registrieren ===&lt;br /&gt;
Über eine kleine Funktion kann man sich arbeit sparen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	function register_namespaces($sxe){&lt;br /&gt;
		$arrNs = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
                        echo($prefix.&amp;#039; = &amp;#039;.$ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alle im XML Dokument angegebenen Namespaces werden geparsed und Registriert. So kann man sie in Kurzform ansprechen. (Siehe Beispiel Mobile.de)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;
&amp;lt;book xmlns:chap=&amp;quot;http://example.org/chapter-title&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Book&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 1&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Donec velit. ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 2&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Lorem ipsum ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
EOD;&lt;br /&gt;
&lt;br /&gt;
$sxe = new SimpleXMLElement($xml);&lt;br /&gt;
&lt;br /&gt;
// Zugriff mit Namespace Prefix&lt;br /&gt;
$sxe-&amp;gt;registerXPathNamespace(&amp;#039;c&amp;#039;, &amp;#039;http://example.org/chapter-title&amp;#039;);&lt;br /&gt;
$result = $sxe-&amp;gt;xpath(&amp;#039;//c:title&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
foreach ($result as $title) {&lt;br /&gt;
  echo $title . &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direkter Zugriff im nächsen Beispiel&lt;br /&gt;
=== Beispiel Ebay Timestamp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$response = &amp;lt;&amp;lt;&amp;lt; XMLBLOCK&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;GeteBayOfficialTimeResponse xmlns=&amp;quot;urn:ebay:apis:eBLBaseComponents&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Timestamp&amp;gt;2005-10-28T01:01:04.668Z&amp;lt;/Timestamp&amp;gt;&lt;br /&gt;
        &amp;lt;Ack&amp;gt;Success&amp;lt;/Ack&amp;gt;&lt;br /&gt;
        &amp;lt;Version&amp;gt;429&amp;lt;/Version&amp;gt;&lt;br /&gt;
        &amp;lt;Build&amp;gt;e429_intl_Bundled_1949355_R1&amp;lt;/Build&amp;gt;&lt;br /&gt;
      &amp;lt;/GeteBayOfficialTimeResponse&amp;gt;&lt;br /&gt;
    &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
XMLBLOCK;&lt;br /&gt;
$xml = simplexml_load_string($response);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zugriff auf Timestamp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Time: &amp;quot; . &lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;http://schemas.xmlsoap.org/soap/envelope/&amp;#039;)-&amp;gt;children(&amp;#039;urn:ebay:apis:eBLBaseComponents&amp;#039;)-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp . &amp;quot;\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;soapenv&amp;#039;, true)-&amp;gt;children()-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
===Beispiel Mobile de===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class Mobile{&lt;br /&gt;
	var $arrNs = array();&lt;br /&gt;
&lt;br /&gt;
	public function init(){&lt;br /&gt;
		$this-&amp;gt;action = &amp;quot;&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;user = &amp;quot;username&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;pw = &amp;quot;passwort&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;customerId = &amp;quot;461731&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;clientId = &amp;quot;517329&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;baseUrl = &amp;quot;services.mobile.de/1.0.0/ad/search&amp;quot;;&lt;br /&gt;
		$arrResult = array(); // Contains last Result-List&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function main(){&lt;br /&gt;
		$this-&amp;gt;init();&lt;br /&gt;
		$params = &amp;quot;?customerId=&amp;quot;.$this-&amp;gt;customerId.&amp;quot;&amp;amp;page.size=100&amp;quot;;&lt;br /&gt;
		$url = $this-&amp;gt;baseUrl.$params;&lt;br /&gt;
		&lt;br /&gt;
		$this-&amp;gt;sxe = $this-&amp;gt;fetch_xml_data_ctx($url);&lt;br /&gt;
		$this-&amp;gt;register_namespaces();&lt;br /&gt;
		$this-&amp;gt;parseXML($this-&amp;gt;sxe);&lt;br /&gt;
		//$this-&amp;gt;sxe_print_info();&lt;br /&gt;
		$this-&amp;gt;send_json($this-&amp;gt;arrResult);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
    //Parse XML and create Array&lt;br /&gt;
    private function parseXML($sxe){&lt;br /&gt;
    	$arrAds = array();&lt;br /&gt;
    	unset($this-&amp;gt;arrResult);&lt;br /&gt;
    	// ADS&lt;br /&gt;
    	$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		if(count($result) &amp;gt; 0){&lt;br /&gt;
			foreach ($result as $ad) {&lt;br /&gt;
				// AUTO Parsing&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count] = $this-&amp;gt;sxe_to_array($ad,&amp;#039;ad&amp;#039;);&lt;br /&gt;
				&lt;br /&gt;
				// MANUAL Parsing&lt;br /&gt;
				// Images&lt;br /&gt;
				unset($arrImages);&lt;br /&gt;
				$arrRepresentation = $ad-&amp;gt;xpath(&amp;#039;ad:images/ad:image/ad:representation&amp;#039;);&lt;br /&gt;
				foreach($arrRepresentation as $representation){&lt;br /&gt;
					foreach($representation-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						$arrImages[$key][]=(string)$val;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count][&amp;#039;images&amp;#039;]= $arrImages;		&lt;br /&gt;
				$count += 1;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
    &lt;br /&gt;
    // Stores Attributes and Childs into Array&lt;br /&gt;
    private function sxe_to_array(SimpleXMLElement $sxe,$ns){&lt;br /&gt;
    	$arr = array();&lt;br /&gt;
    	// ATTRIBUTES&lt;br /&gt;
    	$count=0;&lt;br /&gt;
		foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
			$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// CHILDREN&lt;br /&gt;
		$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		foreach($children as $child_name=&amp;gt;$child_node){&lt;br /&gt;
			$arrChild = $this-&amp;gt;sxe_to_array($child_node,$ns);&lt;br /&gt;
			// RESSOURCE CHILD (ns resource)&lt;br /&gt;
			$resources = $this-&amp;gt;getResources($child_node);&lt;br /&gt;
			//print_r($resources);&lt;br /&gt;
			if(!empty($resources)) $arrChild[&amp;#039;resources&amp;#039;] = $resources;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name][&amp;#039;value&amp;#039;]=(string)$child_node;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name] = $arrChild; &lt;br /&gt;
		}&lt;br /&gt;
    	return $arr;&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private function getResources($node){&lt;br /&gt;
		//add &amp;#039;resource&amp;#039; namespace children (mobilede uses this as language descriptors)&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		$ns=&amp;quot;resource&amp;quot;;&lt;br /&gt;
		$arr = array();&lt;br /&gt;
		$children = $node-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		foreach($children as $resource_name=&amp;gt;$resource_node){&lt;br /&gt;
			//print_r($resource_node);&lt;br /&gt;
			$arrResource = $this-&amp;gt;sxe_to_array($resource_node,$ns);&lt;br /&gt;
			$arr[$count][$resource_name][&amp;#039;value&amp;#039;]=(string)$resource_node;&lt;br /&gt;
			//echo((string)$resource_node);&lt;br /&gt;
			//$arr[$count][$resource_name] = $arrResource; &lt;br /&gt;
			$count +=1;&lt;br /&gt;
		}&lt;br /&gt;
		return $arr;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    private function sxe_print_info(){&lt;br /&gt;
    	$sxe = $this-&amp;gt;sxe;&lt;br /&gt;
    	$namespaces = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;##########&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;namespaces:&amp;lt;/strong&amp;gt; &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	foreach($namespaces as $key=&amp;gt;$val){&lt;br /&gt;
    		//echo(&amp;quot;$key : $val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	}&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;Name: &amp;quot;.$sxe-&amp;gt;getName().&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	//Print Ads Info&lt;br /&gt;
		$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $this-&amp;gt;sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//echo(&amp;quot;Number of ads: &amp;quot;.count($result).&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		//ADs&lt;br /&gt;
		foreach ($result as $ad) {&lt;br /&gt;
			$count += 1;&lt;br /&gt;
			echo(&amp;quot;&amp;lt;strong&amp;gt;Ad $count &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);	&lt;br /&gt;
			$ad_children = $ad-&amp;gt;children(&amp;#039;ad&amp;#039;,TRUE);&lt;br /&gt;
			//AD 1st Gen Children&lt;br /&gt;
			if(count($ad_children) &amp;gt; 0){&lt;br /&gt;
				foreach ($ad_children as $ad_child_name=&amp;gt;$ad_child_node){&lt;br /&gt;
					echo(&amp;quot;&amp;lt;strong&amp;gt;Childname: $ad_child_name&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
					// ATTRIBUTES&lt;br /&gt;
					foreach($ad_child_node-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Attributes:&amp;lt;/strong&amp;gt; &amp;quot;);&lt;br /&gt;
						echo(&amp;quot;$key=$val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Children: &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						// Ad 2nd Gen Children&lt;br /&gt;
						foreach($ad_child_node-&amp;gt;children() as $ad_child_name=&amp;gt;$child_node){&lt;br /&gt;
							echo(&amp;quot;Name: $child_name&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			//$adurl = $ad-&amp;gt;{&amp;#039;detail-page&amp;#039;}-&amp;gt;value-&amp;gt;attributes()-&amp;gt;url;&lt;br /&gt;
			//echo(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$adurl.&amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Link&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
   	}&lt;br /&gt;
   	&lt;br /&gt;
	function register_namespaces(){&lt;br /&gt;
		$this-&amp;gt;arrNs = $this-&amp;gt;sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($this-&amp;gt;arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$this-&amp;gt;sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function send_json($arrJSON){&lt;br /&gt;
		// Wir geben der Anfrage ein JSON Objekt-Literal zurück&lt;br /&gt;
		$ajax_return_data = json_encode($arrJSON);&lt;br /&gt;
		header(&amp;#039;Cache-Control: no-cache, must-revalidate&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Pragma: no-cache&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Content-Length: &amp;#039;.strlen($ajax_return_data));&lt;br /&gt;
		header(&amp;#039;Content-Type: application/json; charset=UTF-8&amp;#039;);&lt;br /&gt;
		echo $ajax_return_data;&lt;br /&gt;
		exit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
$mobile = new Mobile();&lt;br /&gt;
$mobile-&amp;gt;main();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21371</id>
		<title>SimpleXML</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21371"/>
		<updated>2016-02-12T10:26:49Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* SimpleXML und Namespaces */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple XML ist eine PHP Schnittstelle zum Parsen von XML Dateien.&lt;br /&gt;
== Einführung ==&lt;br /&gt;
== Generelles vorgehen ==&lt;br /&gt;
* Einlesen der Daten (z.B. XML-Datei, oder String) in ein &amp;#039;&amp;#039;&amp;#039;SimpleXML Objekt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;xpath Query&amp;#039;&amp;#039;&amp;#039; auf das Objekt anwenden (&amp;#039;&amp;#039;&amp;#039;$result= $sxe-&amp;gt;xpath(&amp;quot;Pfadangabe&amp;quot;)&amp;#039;&amp;#039;&amp;#039;. Man erhält ein &amp;#039;&amp;#039;&amp;#039;Array mit SimpleXML Objekten&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zugriff auf Werte und Attribute der simpleXML Objekte. Oft werden Sie dazu mit foreach in weitere Arrays eingelesen.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML 101 - Empfehlungen zur Arbeit mit simpleXML==&lt;br /&gt;
Quelle: http://stackoverflow.com/questions/1893024/basic-simplexml-working-example Zugriff 7/2013&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;programme&amp;gt; &lt;br /&gt;
  &amp;lt;title&amp;gt;Billy Bushwaka&amp;lt;/title&amp;gt; &lt;br /&gt;
  &amp;lt;episodeNumber&amp;gt;2&amp;lt;/episodeNumber&amp;gt; &lt;br /&gt;
  &amp;lt;description&amp;gt;Billy Bushwaka entertains&amp;lt;/description&amp;gt; &lt;br /&gt;
  &amp;lt;url&amp;gt;play.swf&amp;lt;/url&amp;gt; &lt;br /&gt;
&amp;lt;/programme&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First of all, always &amp;#039;&amp;#039;&amp;#039;name your PHP variables after the node they represent&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 // the root node is ie &amp;lt;programme/&amp;gt;&lt;br /&gt;
 $programme = simplexml_load_file(&amp;quot;local.xml&amp;quot;);&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to children&amp;#039;&amp;#039;&amp;#039; (nodes) as if they were object properties.&lt;br /&gt;
&lt;br /&gt;
 echo $programme-&amp;gt;title;&lt;br /&gt;
If there are &amp;#039;&amp;#039;&amp;#039;multiple children&amp;#039;&amp;#039;&amp;#039; using the same name, you can &amp;#039;&amp;#039;&amp;#039;specify their 0-based position&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 // first &amp;lt;title/&amp;gt; child&lt;br /&gt;
 echo $programme-&amp;gt;title[0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 // create or change the value of the second &amp;lt;title/&amp;gt; child&lt;br /&gt;
 $programme-&amp;gt;title[1] = &amp;#039;Second title&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to attributes&amp;#039;&amp;#039;&amp;#039; as if they were array keys&lt;br /&gt;
&lt;br /&gt;
 // &amp;lt;mynode attr=&amp;quot;attribute value&amp;quot; /&amp;gt;&lt;br /&gt;
 echo $mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
Manchmal muß man Casten (andere Möglichkeiten s.u.)&lt;br /&gt;
 $myVal = (string)$mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XPath&amp;#039;&amp;#039;&amp;#039; always returns an array.&lt;br /&gt;
&lt;br /&gt;
=== More Hints ===&lt;br /&gt;
Quick XML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
 &amp;lt;foo name=&amp;quot;one&amp;quot; game=&amp;quot;lonely&amp;quot;&amp;gt;1&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative xpath:&lt;br /&gt;
&lt;br /&gt;
 $result = $xml-&amp;gt;xpath(&amp;quot;//programme/title&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Quellcode der xml Datei ausgeben ===&lt;br /&gt;
 echo $simplexml-&amp;gt;asXML();&lt;br /&gt;
&lt;br /&gt;
== Snippets ==&lt;br /&gt;
=== XML-Datei von URL holen und in SimpleXML Objekt speichern===&lt;br /&gt;
==== XML Daten von URL holen mit file_get_contents ====&lt;br /&gt;
Hier wird erst nach dem Laden konvertiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$url = &amp;quot;http://username:password@url.com&amp;quot;;&lt;br /&gt;
$xml = file_get_contents($url);&lt;br /&gt;
$data = new SimpleXMLElement($xml);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== XML Daten mit simplexml_load_file ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//einfache Variante&lt;br /&gt;
	function fetch_xml_data($url){&lt;br /&gt;
		$simplexml=simplexml_load_file(rawurlencode(&amp;quot;https://&amp;quot;.$this-&amp;gt;user.&amp;quot;:&amp;quot;.$this-&amp;gt;pw.&amp;#039;@&amp;#039;.$url));&lt;br /&gt;
		$simplexml=simplexml_load_file(&amp;quot;test.xml&amp;quot;);&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manchmal erwartet der Server weitere Header. Dann muß man die Datei auf eine andere Weise mit Context laden (siehe Beispiel Mobile.de und Snippets)&lt;br /&gt;
&lt;br /&gt;
==== Zusätzliche Header mit Stream Context senden ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	// Variante - Einlesen mit Context um diverse Header mit zu schicken&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Zugriff auf Werte ===&lt;br /&gt;
&lt;br /&gt;
==== Suche über xPath ====&lt;br /&gt;
xPath kann man als Suchpfad über die XML Hierarchie sehen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;text&amp;lt;/c&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;stuff&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;d&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;code&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/d&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&lt;br /&gt;
$xml = new SimpleXMLElement($string);&lt;br /&gt;
&lt;br /&gt;
/* Search for &amp;lt;a&amp;gt;&amp;lt;b&amp;gt;&amp;lt;c&amp;gt; */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;/a/b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;/a/b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Relative paths also work... */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/a/b/c: text&lt;br /&gt;
/a/b/c: stuff&lt;br /&gt;
b/c: text&lt;br /&gt;
b/c: stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zugriff auf Attribute ===&lt;br /&gt;
====Beispiel 1====&lt;br /&gt;
&lt;br /&gt;
Man lädt mittels foreach alle Attribute des SimpleXML Objektes in ein Array und greift dann darüber zu.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
	$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hinweis: Damit der Wert des Attributes als String ausgegeben wird muß man Casten (string) ansonsten wird ein Objekt zurück gegeben.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 2 ====&lt;br /&gt;
&lt;br /&gt;
Schneller Zugriff auf ein Attribut (Quelle php.net)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$att = &amp;#039;attribueName&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Zugriff :&lt;br /&gt;
$attribute = $element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Casting als String liefert den Wert (ansonsten das Objekt)&lt;br /&gt;
$attribute = (string)$element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Auch verändern des Wertes ist möglich :&lt;br /&gt;
$element-&amp;gt;attributes()-&amp;gt;$att = &amp;#039;New value of the attribute&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 3 ====&lt;br /&gt;
Schneller Zugriff mit Hilfsfunktion (Quelle: php.net)&lt;br /&gt;
&lt;br /&gt;
SimpleXMLElement Object&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
    [@attributes] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 55555&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    [text] =&amp;gt; &amp;quot;hello world&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Funktion:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function xml_attribute($object, $attribute)&lt;br /&gt;
{&lt;br /&gt;
    if(isset($object[$attribute]))&lt;br /&gt;
        return (string) $object[$attribute];&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nutzung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print xml_attribute($xml, &amp;#039;id&amp;#039;); //prints &amp;quot;55555&amp;quot;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 4 ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein Ergebnis aus xPath ist ein Array von $sxe Objekten&amp;#039;&amp;#039;&amp;#039; und kann z.B. so aussehen (aus mobile.de mit var_dump ausgegeben):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(1) {&lt;br /&gt;
  [0]=&amp;gt;&lt;br /&gt;
  object(SimpleXMLElement)#3 (1) {&lt;br /&gt;
    [&amp;quot;@attributes&amp;quot;]=&amp;gt;&lt;br /&gt;
    array(4) {&lt;br /&gt;
      [&amp;quot;total&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;85&amp;quot;&lt;br /&gt;
      [&amp;quot;page-size&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;50&amp;quot;&lt;br /&gt;
      [&amp;quot;current-page&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;1&amp;quot;&lt;br /&gt;
      [&amp;quot;max-pages&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;2&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Darauf ist auch ein direkter Zugriff möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	private function parseResultInfo($sxe){&lt;br /&gt;
		$arrInfo = array();&lt;br /&gt;
		$xpath=&amp;#039;//search:result&amp;#039;; // this works only if you have used the register_namespaces function in the snippets, otherwise you have to register xmlns:search=&amp;quot;http://services.mobile.de/schema/search&amp;quot;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//var_dump($result);&lt;br /&gt;
		$arrInfo[&amp;#039;total&amp;#039;] = (int)$result[0][&amp;#039;total&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;page-size&amp;#039;] = (int)$result[0][&amp;#039;page-size&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;current-page&amp;#039;] = (int)$result[0][&amp;#039;current-page&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;max-pages&amp;#039;] = (int)$result[0][&amp;#039;max-pages&amp;#039;][0];&lt;br /&gt;
		//print_r($arrInfo);&lt;br /&gt;
		return $arrInfo;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kindknoten abfragen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$ns ist der Namespace, der zweite Parameter sagt ob rekursiv gesucht wird.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML und Namespaces ==&lt;br /&gt;
&lt;br /&gt;
=== Einfache Beispiele: ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;root xmlns:event=&amp;quot;http://www.webex.com/schemas/2002/06/service/event&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;event:event&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionKey&amp;gt;&amp;lt;/event:sessionKey&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionName&amp;gt;Learn QB in Minutes&amp;lt;/event:sessionName&amp;gt;&lt;br /&gt;
        &amp;lt;event:sessionType&amp;gt;9&amp;lt;/event:sessionType&amp;gt;&lt;br /&gt;
        &amp;lt;event:hostWebExID&amp;gt;&amp;lt;/event:hostWebExID&amp;gt;&lt;br /&gt;
        &amp;lt;event:startDate&amp;gt;02/12/2009&amp;lt;/event:startDate&amp;gt;&lt;br /&gt;
        &amp;lt;event:endDate&amp;gt;02/12/2009&amp;lt;/event:endDate&amp;gt;&lt;br /&gt;
        &amp;lt;event:timeZoneID&amp;gt;11&amp;lt;/event:timeZoneID&amp;gt;&lt;br /&gt;
        &amp;lt;event:duration&amp;gt;30&amp;lt;/event:duration&amp;gt;&lt;br /&gt;
        &amp;lt;event:description&amp;gt;&amp;lt;/event:description&amp;gt;&lt;br /&gt;
        &amp;lt;event:status&amp;gt;NOT_INPROGRESS&amp;lt;/event:status&amp;gt;&lt;br /&gt;
        &amp;lt;event:panelists&amp;gt;&amp;lt;/event:panelists&amp;gt;&lt;br /&gt;
        &amp;lt;event:listStatus&amp;gt;PUBLIC&amp;lt;/event:listStatus&amp;gt;&lt;br /&gt;
    &amp;lt;/event:event&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
&amp;lt;/root&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==== Zugriff ohne Registrierung des Namespace ====&lt;br /&gt;
Dies setzt voraus, daß man sicher ist daß das xml immer den gleichen prefix verwendet.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;#&amp;gt;&lt;br /&gt;
$xml = new SimpleXMLElement($r);&lt;br /&gt;
&lt;br /&gt;
foreach($xml-&amp;gt;xpath(&amp;#039;//event:event&amp;#039;) as $event) {&lt;br /&gt;
 var_export($event-&amp;gt;xpath(&amp;#039;event:sessionKey&amp;#039;));&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=== Namespaces registrieren ===&lt;br /&gt;
Über eine kleine Funktion kann man sich arbeit sparen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	function register_namespaces($sxe){&lt;br /&gt;
		$arrNs = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
                        echo($prefix.&amp;#039; = &amp;#039;.$ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alle im XML Dokument angegebenen Namespaces werden geparsed und Registriert. So kann man sie in Kurzform ansprechen. (Siehe Beispiel Mobile.de)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;
&amp;lt;book xmlns:chap=&amp;quot;http://example.org/chapter-title&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Book&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 1&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Donec velit. ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 2&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Lorem ipsum ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
EOD;&lt;br /&gt;
&lt;br /&gt;
$sxe = new SimpleXMLElement($xml);&lt;br /&gt;
&lt;br /&gt;
// Zugriff mit Namespace Prefix&lt;br /&gt;
$sxe-&amp;gt;registerXPathNamespace(&amp;#039;c&amp;#039;, &amp;#039;http://example.org/chapter-title&amp;#039;);&lt;br /&gt;
$result = $sxe-&amp;gt;xpath(&amp;#039;//c:title&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
foreach ($result as $title) {&lt;br /&gt;
  echo $title . &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direkter Zugriff im nächsen Beispiel&lt;br /&gt;
=== Beispiel Ebay Timestamp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$response = &amp;lt;&amp;lt;&amp;lt; XMLBLOCK&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;GeteBayOfficialTimeResponse xmlns=&amp;quot;urn:ebay:apis:eBLBaseComponents&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Timestamp&amp;gt;2005-10-28T01:01:04.668Z&amp;lt;/Timestamp&amp;gt;&lt;br /&gt;
        &amp;lt;Ack&amp;gt;Success&amp;lt;/Ack&amp;gt;&lt;br /&gt;
        &amp;lt;Version&amp;gt;429&amp;lt;/Version&amp;gt;&lt;br /&gt;
        &amp;lt;Build&amp;gt;e429_intl_Bundled_1949355_R1&amp;lt;/Build&amp;gt;&lt;br /&gt;
      &amp;lt;/GeteBayOfficialTimeResponse&amp;gt;&lt;br /&gt;
    &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
XMLBLOCK;&lt;br /&gt;
$xml = simplexml_load_string($response);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zugriff auf Timestamp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Time: &amp;quot; . &lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;http://schemas.xmlsoap.org/soap/envelope/&amp;#039;)-&amp;gt;children(&amp;#039;urn:ebay:apis:eBLBaseComponents&amp;#039;)-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp . &amp;quot;\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;soapenv&amp;#039;, true)-&amp;gt;children()-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
===Beispiel Mobile de===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class Mobile{&lt;br /&gt;
	var $arrNs = array();&lt;br /&gt;
&lt;br /&gt;
	public function init(){&lt;br /&gt;
		$this-&amp;gt;action = &amp;quot;&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;user = &amp;quot;username&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;pw = &amp;quot;passwort&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;customerId = &amp;quot;461731&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;clientId = &amp;quot;517329&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;baseUrl = &amp;quot;services.mobile.de/1.0.0/ad/search&amp;quot;;&lt;br /&gt;
		$arrResult = array(); // Contains last Result-List&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function main(){&lt;br /&gt;
		$this-&amp;gt;init();&lt;br /&gt;
		$params = &amp;quot;?customerId=&amp;quot;.$this-&amp;gt;customerId.&amp;quot;&amp;amp;page.size=100&amp;quot;;&lt;br /&gt;
		$url = $this-&amp;gt;baseUrl.$params;&lt;br /&gt;
		&lt;br /&gt;
		$this-&amp;gt;sxe = $this-&amp;gt;fetch_xml_data_ctx($url);&lt;br /&gt;
		$this-&amp;gt;register_namespaces();&lt;br /&gt;
		$this-&amp;gt;parseXML($this-&amp;gt;sxe);&lt;br /&gt;
		//$this-&amp;gt;sxe_print_info();&lt;br /&gt;
		$this-&amp;gt;send_json($this-&amp;gt;arrResult);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
    //Parse XML and create Array&lt;br /&gt;
    private function parseXML($sxe){&lt;br /&gt;
    	$arrAds = array();&lt;br /&gt;
    	unset($this-&amp;gt;arrResult);&lt;br /&gt;
    	// ADS&lt;br /&gt;
    	$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		if(count($result) &amp;gt; 0){&lt;br /&gt;
			foreach ($result as $ad) {&lt;br /&gt;
				// AUTO Parsing&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count] = $this-&amp;gt;sxe_to_array($ad,&amp;#039;ad&amp;#039;);&lt;br /&gt;
				&lt;br /&gt;
				// MANUAL Parsing&lt;br /&gt;
				// Images&lt;br /&gt;
				unset($arrImages);&lt;br /&gt;
				$arrRepresentation = $ad-&amp;gt;xpath(&amp;#039;ad:images/ad:image/ad:representation&amp;#039;);&lt;br /&gt;
				foreach($arrRepresentation as $representation){&lt;br /&gt;
					foreach($representation-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						$arrImages[$key][]=(string)$val;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count][&amp;#039;images&amp;#039;]= $arrImages;		&lt;br /&gt;
				$count += 1;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
    &lt;br /&gt;
    // Stores Attributes and Childs into Array&lt;br /&gt;
    private function sxe_to_array(SimpleXMLElement $sxe,$ns){&lt;br /&gt;
    	$arr = array();&lt;br /&gt;
    	// ATTRIBUTES&lt;br /&gt;
    	$count=0;&lt;br /&gt;
		foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
			$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// CHILDREN&lt;br /&gt;
		$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		foreach($children as $child_name=&amp;gt;$child_node){&lt;br /&gt;
			$arrChild = $this-&amp;gt;sxe_to_array($child_node,$ns);&lt;br /&gt;
			// RESSOURCE CHILD (ns resource)&lt;br /&gt;
			$resources = $this-&amp;gt;getResources($child_node);&lt;br /&gt;
			//print_r($resources);&lt;br /&gt;
			if(!empty($resources)) $arrChild[&amp;#039;resources&amp;#039;] = $resources;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name][&amp;#039;value&amp;#039;]=(string)$child_node;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name] = $arrChild; &lt;br /&gt;
		}&lt;br /&gt;
    	return $arr;&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private function getResources($node){&lt;br /&gt;
		//add &amp;#039;resource&amp;#039; namespace children (mobilede uses this as language descriptors)&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		$ns=&amp;quot;resource&amp;quot;;&lt;br /&gt;
		$arr = array();&lt;br /&gt;
		$children = $node-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		foreach($children as $resource_name=&amp;gt;$resource_node){&lt;br /&gt;
			//print_r($resource_node);&lt;br /&gt;
			$arrResource = $this-&amp;gt;sxe_to_array($resource_node,$ns);&lt;br /&gt;
			$arr[$count][$resource_name][&amp;#039;value&amp;#039;]=(string)$resource_node;&lt;br /&gt;
			//echo((string)$resource_node);&lt;br /&gt;
			//$arr[$count][$resource_name] = $arrResource; &lt;br /&gt;
			$count +=1;&lt;br /&gt;
		}&lt;br /&gt;
		return $arr;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    private function sxe_print_info(){&lt;br /&gt;
    	$sxe = $this-&amp;gt;sxe;&lt;br /&gt;
    	$namespaces = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;##########&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;namespaces:&amp;lt;/strong&amp;gt; &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	foreach($namespaces as $key=&amp;gt;$val){&lt;br /&gt;
    		//echo(&amp;quot;$key : $val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	}&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;Name: &amp;quot;.$sxe-&amp;gt;getName().&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	//Print Ads Info&lt;br /&gt;
		$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $this-&amp;gt;sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//echo(&amp;quot;Number of ads: &amp;quot;.count($result).&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		//ADs&lt;br /&gt;
		foreach ($result as $ad) {&lt;br /&gt;
			$count += 1;&lt;br /&gt;
			echo(&amp;quot;&amp;lt;strong&amp;gt;Ad $count &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);	&lt;br /&gt;
			$ad_children = $ad-&amp;gt;children(&amp;#039;ad&amp;#039;,TRUE);&lt;br /&gt;
			//AD 1st Gen Children&lt;br /&gt;
			if(count($ad_children) &amp;gt; 0){&lt;br /&gt;
				foreach ($ad_children as $ad_child_name=&amp;gt;$ad_child_node){&lt;br /&gt;
					echo(&amp;quot;&amp;lt;strong&amp;gt;Childname: $ad_child_name&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
					// ATTRIBUTES&lt;br /&gt;
					foreach($ad_child_node-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Attributes:&amp;lt;/strong&amp;gt; &amp;quot;);&lt;br /&gt;
						echo(&amp;quot;$key=$val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Children: &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						// Ad 2nd Gen Children&lt;br /&gt;
						foreach($ad_child_node-&amp;gt;children() as $ad_child_name=&amp;gt;$child_node){&lt;br /&gt;
							echo(&amp;quot;Name: $child_name&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			//$adurl = $ad-&amp;gt;{&amp;#039;detail-page&amp;#039;}-&amp;gt;value-&amp;gt;attributes()-&amp;gt;url;&lt;br /&gt;
			//echo(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$adurl.&amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Link&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
   	}&lt;br /&gt;
   	&lt;br /&gt;
	function register_namespaces(){&lt;br /&gt;
		$this-&amp;gt;arrNs = $this-&amp;gt;sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($this-&amp;gt;arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$this-&amp;gt;sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function send_json($arrJSON){&lt;br /&gt;
		// Wir geben der Anfrage ein JSON Objekt-Literal zurück&lt;br /&gt;
		$ajax_return_data = json_encode($arrJSON);&lt;br /&gt;
		header(&amp;#039;Cache-Control: no-cache, must-revalidate&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Pragma: no-cache&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Content-Length: &amp;#039;.strlen($ajax_return_data));&lt;br /&gt;
		header(&amp;#039;Content-Type: application/json; charset=UTF-8&amp;#039;);&lt;br /&gt;
		echo $ajax_return_data;&lt;br /&gt;
		exit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
$mobile = new Mobile();&lt;br /&gt;
$mobile-&amp;gt;main();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21370</id>
		<title>SimpleXML</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21370"/>
		<updated>2016-02-12T09:56:21Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* Generelles vorgehen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple XML ist eine PHP Schnittstelle zum Parsen von XML Dateien.&lt;br /&gt;
== Einführung ==&lt;br /&gt;
== Generelles vorgehen ==&lt;br /&gt;
* Einlesen der Daten (z.B. XML-Datei, oder String) in ein &amp;#039;&amp;#039;&amp;#039;SimpleXML Objekt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;xpath Query&amp;#039;&amp;#039;&amp;#039; auf das Objekt anwenden (&amp;#039;&amp;#039;&amp;#039;$result= $sxe-&amp;gt;xpath(&amp;quot;Pfadangabe&amp;quot;)&amp;#039;&amp;#039;&amp;#039;. Man erhält ein &amp;#039;&amp;#039;&amp;#039;Array mit SimpleXML Objekten&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zugriff auf Werte und Attribute der simpleXML Objekte. Oft werden Sie dazu mit foreach in weitere Arrays eingelesen.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML 101 - Empfehlungen zur Arbeit mit simpleXML==&lt;br /&gt;
Quelle: http://stackoverflow.com/questions/1893024/basic-simplexml-working-example Zugriff 7/2013&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;programme&amp;gt; &lt;br /&gt;
  &amp;lt;title&amp;gt;Billy Bushwaka&amp;lt;/title&amp;gt; &lt;br /&gt;
  &amp;lt;episodeNumber&amp;gt;2&amp;lt;/episodeNumber&amp;gt; &lt;br /&gt;
  &amp;lt;description&amp;gt;Billy Bushwaka entertains&amp;lt;/description&amp;gt; &lt;br /&gt;
  &amp;lt;url&amp;gt;play.swf&amp;lt;/url&amp;gt; &lt;br /&gt;
&amp;lt;/programme&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First of all, always &amp;#039;&amp;#039;&amp;#039;name your PHP variables after the node they represent&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 // the root node is ie &amp;lt;programme/&amp;gt;&lt;br /&gt;
 $programme = simplexml_load_file(&amp;quot;local.xml&amp;quot;);&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to children&amp;#039;&amp;#039;&amp;#039; (nodes) as if they were object properties.&lt;br /&gt;
&lt;br /&gt;
 echo $programme-&amp;gt;title;&lt;br /&gt;
If there are &amp;#039;&amp;#039;&amp;#039;multiple children&amp;#039;&amp;#039;&amp;#039; using the same name, you can &amp;#039;&amp;#039;&amp;#039;specify their 0-based position&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 // first &amp;lt;title/&amp;gt; child&lt;br /&gt;
 echo $programme-&amp;gt;title[0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 // create or change the value of the second &amp;lt;title/&amp;gt; child&lt;br /&gt;
 $programme-&amp;gt;title[1] = &amp;#039;Second title&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to attributes&amp;#039;&amp;#039;&amp;#039; as if they were array keys&lt;br /&gt;
&lt;br /&gt;
 // &amp;lt;mynode attr=&amp;quot;attribute value&amp;quot; /&amp;gt;&lt;br /&gt;
 echo $mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
Manchmal muß man Casten (andere Möglichkeiten s.u.)&lt;br /&gt;
 $myVal = (string)$mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XPath&amp;#039;&amp;#039;&amp;#039; always returns an array.&lt;br /&gt;
&lt;br /&gt;
=== More Hints ===&lt;br /&gt;
Quick XML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
 &amp;lt;foo name=&amp;quot;one&amp;quot; game=&amp;quot;lonely&amp;quot;&amp;gt;1&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative xpath:&lt;br /&gt;
&lt;br /&gt;
 $result = $xml-&amp;gt;xpath(&amp;quot;//programme/title&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Quellcode der xml Datei ausgeben ===&lt;br /&gt;
 echo $simplexml-&amp;gt;asXML();&lt;br /&gt;
&lt;br /&gt;
== Snippets ==&lt;br /&gt;
=== XML-Datei von URL holen und in SimpleXML Objekt speichern===&lt;br /&gt;
==== XML Daten von URL holen mit file_get_contents ====&lt;br /&gt;
Hier wird erst nach dem Laden konvertiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$url = &amp;quot;http://username:password@url.com&amp;quot;;&lt;br /&gt;
$xml = file_get_contents($url);&lt;br /&gt;
$data = new SimpleXMLElement($xml);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== XML Daten mit simplexml_load_file ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//einfache Variante&lt;br /&gt;
	function fetch_xml_data($url){&lt;br /&gt;
		$simplexml=simplexml_load_file(rawurlencode(&amp;quot;https://&amp;quot;.$this-&amp;gt;user.&amp;quot;:&amp;quot;.$this-&amp;gt;pw.&amp;#039;@&amp;#039;.$url));&lt;br /&gt;
		$simplexml=simplexml_load_file(&amp;quot;test.xml&amp;quot;);&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manchmal erwartet der Server weitere Header. Dann muß man die Datei auf eine andere Weise mit Context laden (siehe Beispiel Mobile.de und Snippets)&lt;br /&gt;
&lt;br /&gt;
==== Zusätzliche Header mit Stream Context senden ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	// Variante - Einlesen mit Context um diverse Header mit zu schicken&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Zugriff auf Werte ===&lt;br /&gt;
&lt;br /&gt;
==== Suche über xPath ====&lt;br /&gt;
xPath kann man als Suchpfad über die XML Hierarchie sehen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;text&amp;lt;/c&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;stuff&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;d&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;code&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/d&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&lt;br /&gt;
$xml = new SimpleXMLElement($string);&lt;br /&gt;
&lt;br /&gt;
/* Search for &amp;lt;a&amp;gt;&amp;lt;b&amp;gt;&amp;lt;c&amp;gt; */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;/a/b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;/a/b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Relative paths also work... */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/a/b/c: text&lt;br /&gt;
/a/b/c: stuff&lt;br /&gt;
b/c: text&lt;br /&gt;
b/c: stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zugriff auf Attribute ===&lt;br /&gt;
====Beispiel 1====&lt;br /&gt;
&lt;br /&gt;
Man lädt mittels foreach alle Attribute des SimpleXML Objektes in ein Array und greift dann darüber zu.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
	$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hinweis: Damit der Wert des Attributes als String ausgegeben wird muß man Casten (string) ansonsten wird ein Objekt zurück gegeben.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 2 ====&lt;br /&gt;
&lt;br /&gt;
Schneller Zugriff auf ein Attribut (Quelle php.net)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$att = &amp;#039;attribueName&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Zugriff :&lt;br /&gt;
$attribute = $element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Casting als String liefert den Wert (ansonsten das Objekt)&lt;br /&gt;
$attribute = (string)$element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Auch verändern des Wertes ist möglich :&lt;br /&gt;
$element-&amp;gt;attributes()-&amp;gt;$att = &amp;#039;New value of the attribute&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 3 ====&lt;br /&gt;
Schneller Zugriff mit Hilfsfunktion (Quelle: php.net)&lt;br /&gt;
&lt;br /&gt;
SimpleXMLElement Object&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
    [@attributes] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 55555&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    [text] =&amp;gt; &amp;quot;hello world&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Funktion:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function xml_attribute($object, $attribute)&lt;br /&gt;
{&lt;br /&gt;
    if(isset($object[$attribute]))&lt;br /&gt;
        return (string) $object[$attribute];&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nutzung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print xml_attribute($xml, &amp;#039;id&amp;#039;); //prints &amp;quot;55555&amp;quot;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 4 ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein Ergebnis aus xPath ist ein Array von $sxe Objekten&amp;#039;&amp;#039;&amp;#039; und kann z.B. so aussehen (aus mobile.de mit var_dump ausgegeben):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(1) {&lt;br /&gt;
  [0]=&amp;gt;&lt;br /&gt;
  object(SimpleXMLElement)#3 (1) {&lt;br /&gt;
    [&amp;quot;@attributes&amp;quot;]=&amp;gt;&lt;br /&gt;
    array(4) {&lt;br /&gt;
      [&amp;quot;total&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;85&amp;quot;&lt;br /&gt;
      [&amp;quot;page-size&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;50&amp;quot;&lt;br /&gt;
      [&amp;quot;current-page&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;1&amp;quot;&lt;br /&gt;
      [&amp;quot;max-pages&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;2&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Darauf ist auch ein direkter Zugriff möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	private function parseResultInfo($sxe){&lt;br /&gt;
		$arrInfo = array();&lt;br /&gt;
		$xpath=&amp;#039;//search:result&amp;#039;; // this works only if you have used the register_namespaces function in the snippets, otherwise you have to register xmlns:search=&amp;quot;http://services.mobile.de/schema/search&amp;quot;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//var_dump($result);&lt;br /&gt;
		$arrInfo[&amp;#039;total&amp;#039;] = (int)$result[0][&amp;#039;total&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;page-size&amp;#039;] = (int)$result[0][&amp;#039;page-size&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;current-page&amp;#039;] = (int)$result[0][&amp;#039;current-page&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;max-pages&amp;#039;] = (int)$result[0][&amp;#039;max-pages&amp;#039;][0];&lt;br /&gt;
		//print_r($arrInfo);&lt;br /&gt;
		return $arrInfo;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kindknoten abfragen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$ns ist der Namespace, der zweite Parameter sagt ob rekursiv gesucht wird.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML und Namespaces ==&lt;br /&gt;
=== Namespaces registrieren ===&lt;br /&gt;
Über eine kleine Funktion kann man sich arbeit sparen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	function register_namespaces($sxe){&lt;br /&gt;
		$arrNs = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
                        echo($prefix.&amp;#039; = &amp;#039;.$ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alle im XML Dokument angegebenen Namespaces werden geparsed und Registriert. So kann man sie in Kurzform ansprechen. (Siehe Beispiel Mobile.de)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;
&amp;lt;book xmlns:chap=&amp;quot;http://example.org/chapter-title&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Book&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 1&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Donec velit. ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 2&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Lorem ipsum ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
EOD;&lt;br /&gt;
&lt;br /&gt;
$sxe = new SimpleXMLElement($xml);&lt;br /&gt;
&lt;br /&gt;
// Zugriff mit Namespace Prefix&lt;br /&gt;
$sxe-&amp;gt;registerXPathNamespace(&amp;#039;c&amp;#039;, &amp;#039;http://example.org/chapter-title&amp;#039;);&lt;br /&gt;
$result = $sxe-&amp;gt;xpath(&amp;#039;//c:title&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
foreach ($result as $title) {&lt;br /&gt;
  echo $title . &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direkter Zugriff im nächsen Beispiel&lt;br /&gt;
=== Beispiel Ebay Timestamp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$response = &amp;lt;&amp;lt;&amp;lt; XMLBLOCK&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;GeteBayOfficialTimeResponse xmlns=&amp;quot;urn:ebay:apis:eBLBaseComponents&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Timestamp&amp;gt;2005-10-28T01:01:04.668Z&amp;lt;/Timestamp&amp;gt;&lt;br /&gt;
        &amp;lt;Ack&amp;gt;Success&amp;lt;/Ack&amp;gt;&lt;br /&gt;
        &amp;lt;Version&amp;gt;429&amp;lt;/Version&amp;gt;&lt;br /&gt;
        &amp;lt;Build&amp;gt;e429_intl_Bundled_1949355_R1&amp;lt;/Build&amp;gt;&lt;br /&gt;
      &amp;lt;/GeteBayOfficialTimeResponse&amp;gt;&lt;br /&gt;
    &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
XMLBLOCK;&lt;br /&gt;
$xml = simplexml_load_string($response);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zugriff auf Timestamp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Time: &amp;quot; . &lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;http://schemas.xmlsoap.org/soap/envelope/&amp;#039;)-&amp;gt;children(&amp;#039;urn:ebay:apis:eBLBaseComponents&amp;#039;)-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp . &amp;quot;\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;soapenv&amp;#039;, true)-&amp;gt;children()-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
===Beispiel Mobile de===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class Mobile{&lt;br /&gt;
	var $arrNs = array();&lt;br /&gt;
&lt;br /&gt;
	public function init(){&lt;br /&gt;
		$this-&amp;gt;action = &amp;quot;&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;user = &amp;quot;username&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;pw = &amp;quot;passwort&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;customerId = &amp;quot;461731&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;clientId = &amp;quot;517329&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;baseUrl = &amp;quot;services.mobile.de/1.0.0/ad/search&amp;quot;;&lt;br /&gt;
		$arrResult = array(); // Contains last Result-List&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function main(){&lt;br /&gt;
		$this-&amp;gt;init();&lt;br /&gt;
		$params = &amp;quot;?customerId=&amp;quot;.$this-&amp;gt;customerId.&amp;quot;&amp;amp;page.size=100&amp;quot;;&lt;br /&gt;
		$url = $this-&amp;gt;baseUrl.$params;&lt;br /&gt;
		&lt;br /&gt;
		$this-&amp;gt;sxe = $this-&amp;gt;fetch_xml_data_ctx($url);&lt;br /&gt;
		$this-&amp;gt;register_namespaces();&lt;br /&gt;
		$this-&amp;gt;parseXML($this-&amp;gt;sxe);&lt;br /&gt;
		//$this-&amp;gt;sxe_print_info();&lt;br /&gt;
		$this-&amp;gt;send_json($this-&amp;gt;arrResult);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
    //Parse XML and create Array&lt;br /&gt;
    private function parseXML($sxe){&lt;br /&gt;
    	$arrAds = array();&lt;br /&gt;
    	unset($this-&amp;gt;arrResult);&lt;br /&gt;
    	// ADS&lt;br /&gt;
    	$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		if(count($result) &amp;gt; 0){&lt;br /&gt;
			foreach ($result as $ad) {&lt;br /&gt;
				// AUTO Parsing&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count] = $this-&amp;gt;sxe_to_array($ad,&amp;#039;ad&amp;#039;);&lt;br /&gt;
				&lt;br /&gt;
				// MANUAL Parsing&lt;br /&gt;
				// Images&lt;br /&gt;
				unset($arrImages);&lt;br /&gt;
				$arrRepresentation = $ad-&amp;gt;xpath(&amp;#039;ad:images/ad:image/ad:representation&amp;#039;);&lt;br /&gt;
				foreach($arrRepresentation as $representation){&lt;br /&gt;
					foreach($representation-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						$arrImages[$key][]=(string)$val;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count][&amp;#039;images&amp;#039;]= $arrImages;		&lt;br /&gt;
				$count += 1;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
    &lt;br /&gt;
    // Stores Attributes and Childs into Array&lt;br /&gt;
    private function sxe_to_array(SimpleXMLElement $sxe,$ns){&lt;br /&gt;
    	$arr = array();&lt;br /&gt;
    	// ATTRIBUTES&lt;br /&gt;
    	$count=0;&lt;br /&gt;
		foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
			$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// CHILDREN&lt;br /&gt;
		$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		foreach($children as $child_name=&amp;gt;$child_node){&lt;br /&gt;
			$arrChild = $this-&amp;gt;sxe_to_array($child_node,$ns);&lt;br /&gt;
			// RESSOURCE CHILD (ns resource)&lt;br /&gt;
			$resources = $this-&amp;gt;getResources($child_node);&lt;br /&gt;
			//print_r($resources);&lt;br /&gt;
			if(!empty($resources)) $arrChild[&amp;#039;resources&amp;#039;] = $resources;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name][&amp;#039;value&amp;#039;]=(string)$child_node;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name] = $arrChild; &lt;br /&gt;
		}&lt;br /&gt;
    	return $arr;&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private function getResources($node){&lt;br /&gt;
		//add &amp;#039;resource&amp;#039; namespace children (mobilede uses this as language descriptors)&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		$ns=&amp;quot;resource&amp;quot;;&lt;br /&gt;
		$arr = array();&lt;br /&gt;
		$children = $node-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		foreach($children as $resource_name=&amp;gt;$resource_node){&lt;br /&gt;
			//print_r($resource_node);&lt;br /&gt;
			$arrResource = $this-&amp;gt;sxe_to_array($resource_node,$ns);&lt;br /&gt;
			$arr[$count][$resource_name][&amp;#039;value&amp;#039;]=(string)$resource_node;&lt;br /&gt;
			//echo((string)$resource_node);&lt;br /&gt;
			//$arr[$count][$resource_name] = $arrResource; &lt;br /&gt;
			$count +=1;&lt;br /&gt;
		}&lt;br /&gt;
		return $arr;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    private function sxe_print_info(){&lt;br /&gt;
    	$sxe = $this-&amp;gt;sxe;&lt;br /&gt;
    	$namespaces = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;##########&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;namespaces:&amp;lt;/strong&amp;gt; &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	foreach($namespaces as $key=&amp;gt;$val){&lt;br /&gt;
    		//echo(&amp;quot;$key : $val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	}&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;Name: &amp;quot;.$sxe-&amp;gt;getName().&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	//Print Ads Info&lt;br /&gt;
		$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $this-&amp;gt;sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//echo(&amp;quot;Number of ads: &amp;quot;.count($result).&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		//ADs&lt;br /&gt;
		foreach ($result as $ad) {&lt;br /&gt;
			$count += 1;&lt;br /&gt;
			echo(&amp;quot;&amp;lt;strong&amp;gt;Ad $count &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);	&lt;br /&gt;
			$ad_children = $ad-&amp;gt;children(&amp;#039;ad&amp;#039;,TRUE);&lt;br /&gt;
			//AD 1st Gen Children&lt;br /&gt;
			if(count($ad_children) &amp;gt; 0){&lt;br /&gt;
				foreach ($ad_children as $ad_child_name=&amp;gt;$ad_child_node){&lt;br /&gt;
					echo(&amp;quot;&amp;lt;strong&amp;gt;Childname: $ad_child_name&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
					// ATTRIBUTES&lt;br /&gt;
					foreach($ad_child_node-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Attributes:&amp;lt;/strong&amp;gt; &amp;quot;);&lt;br /&gt;
						echo(&amp;quot;$key=$val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Children: &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						// Ad 2nd Gen Children&lt;br /&gt;
						foreach($ad_child_node-&amp;gt;children() as $ad_child_name=&amp;gt;$child_node){&lt;br /&gt;
							echo(&amp;quot;Name: $child_name&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			//$adurl = $ad-&amp;gt;{&amp;#039;detail-page&amp;#039;}-&amp;gt;value-&amp;gt;attributes()-&amp;gt;url;&lt;br /&gt;
			//echo(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$adurl.&amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Link&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
   	}&lt;br /&gt;
   	&lt;br /&gt;
	function register_namespaces(){&lt;br /&gt;
		$this-&amp;gt;arrNs = $this-&amp;gt;sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($this-&amp;gt;arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$this-&amp;gt;sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function send_json($arrJSON){&lt;br /&gt;
		// Wir geben der Anfrage ein JSON Objekt-Literal zurück&lt;br /&gt;
		$ajax_return_data = json_encode($arrJSON);&lt;br /&gt;
		header(&amp;#039;Cache-Control: no-cache, must-revalidate&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Pragma: no-cache&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Content-Length: &amp;#039;.strlen($ajax_return_data));&lt;br /&gt;
		header(&amp;#039;Content-Type: application/json; charset=UTF-8&amp;#039;);&lt;br /&gt;
		echo $ajax_return_data;&lt;br /&gt;
		exit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
$mobile = new Mobile();&lt;br /&gt;
$mobile-&amp;gt;main();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
	<entry>
		<id>https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21369</id>
		<title>SimpleXML</title>
		<link rel="alternate" type="text/html" href="https://wiki.stephanschlegel.de/index.php?title=SimpleXML&amp;diff=21369"/>
		<updated>2016-02-12T09:42:47Z</updated>

		<summary type="html">&lt;p&gt;46.5.47.162: /* Beispiel 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Simple XML ist eine PHP Schnittstelle zum Parsen von XML Dateien.&lt;br /&gt;
== Einführung ==&lt;br /&gt;
== Generelles vorgehen ==&lt;br /&gt;
* Einlesen der Daten (z.B. XML-Datei, oder String) in ein &amp;#039;&amp;#039;&amp;#039;SimpleXML Objekt&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;xpath Query&amp;#039;&amp;#039;&amp;#039; auf das Objekt anwenden ($result= $sxe-&amp;gt;xpath(&amp;quot;Pfadangabe&amp;quot;). Man erhält ein &amp;#039;&amp;#039;&amp;#039;Array mit SimpleXML Objekten&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Zugriff auf Werte und Attribute der simpleXML Objekte. Oft werden Sie dazu mit foreach in weitere Arrays eingelesen.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML 101 - Empfehlungen zur Arbeit mit simpleXML==&lt;br /&gt;
Quelle: http://stackoverflow.com/questions/1893024/basic-simplexml-working-example Zugriff 7/2013&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;ISO-8859-1&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;programme&amp;gt; &lt;br /&gt;
  &amp;lt;title&amp;gt;Billy Bushwaka&amp;lt;/title&amp;gt; &lt;br /&gt;
  &amp;lt;episodeNumber&amp;gt;2&amp;lt;/episodeNumber&amp;gt; &lt;br /&gt;
  &amp;lt;description&amp;gt;Billy Bushwaka entertains&amp;lt;/description&amp;gt; &lt;br /&gt;
  &amp;lt;url&amp;gt;play.swf&amp;lt;/url&amp;gt; &lt;br /&gt;
&amp;lt;/programme&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First of all, always &amp;#039;&amp;#039;&amp;#039;name your PHP variables after the node they represent&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
 // the root node is ie &amp;lt;programme/&amp;gt;&lt;br /&gt;
 $programme = simplexml_load_file(&amp;quot;local.xml&amp;quot;);&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to children&amp;#039;&amp;#039;&amp;#039; (nodes) as if they were object properties.&lt;br /&gt;
&lt;br /&gt;
 echo $programme-&amp;gt;title;&lt;br /&gt;
If there are &amp;#039;&amp;#039;&amp;#039;multiple children&amp;#039;&amp;#039;&amp;#039; using the same name, you can &amp;#039;&amp;#039;&amp;#039;specify their 0-based position&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
 // first &amp;lt;title/&amp;gt; child&lt;br /&gt;
 echo $programme-&amp;gt;title[0];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 // create or change the value of the second &amp;lt;title/&amp;gt; child&lt;br /&gt;
 $programme-&amp;gt;title[1] = &amp;#039;Second title&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Access to attributes&amp;#039;&amp;#039;&amp;#039; as if they were array keys&lt;br /&gt;
&lt;br /&gt;
 // &amp;lt;mynode attr=&amp;quot;attribute value&amp;quot; /&amp;gt;&lt;br /&gt;
 echo $mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
Manchmal muß man Casten (andere Möglichkeiten s.u.)&lt;br /&gt;
 $myVal = (string)$mynode[&amp;#039;attr&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;XPath&amp;#039;&amp;#039;&amp;#039; always returns an array.&lt;br /&gt;
&lt;br /&gt;
=== More Hints ===&lt;br /&gt;
Quick XML&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
 &amp;lt;foo name=&amp;quot;one&amp;quot; game=&amp;quot;lonely&amp;quot;&amp;gt;1&amp;lt;/foo&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Alternative xpath:&lt;br /&gt;
&lt;br /&gt;
 $result = $xml-&amp;gt;xpath(&amp;quot;//programme/title&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== Quellcode der xml Datei ausgeben ===&lt;br /&gt;
 echo $simplexml-&amp;gt;asXML();&lt;br /&gt;
&lt;br /&gt;
== Snippets ==&lt;br /&gt;
=== XML-Datei von URL holen und in SimpleXML Objekt speichern===&lt;br /&gt;
==== XML Daten von URL holen mit file_get_contents ====&lt;br /&gt;
Hier wird erst nach dem Laden konvertiert.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$url = &amp;quot;http://username:password@url.com&amp;quot;;&lt;br /&gt;
$xml = file_get_contents($url);&lt;br /&gt;
$data = new SimpleXMLElement($xml);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== XML Daten mit simplexml_load_file ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//einfache Variante&lt;br /&gt;
	function fetch_xml_data($url){&lt;br /&gt;
		$simplexml=simplexml_load_file(rawurlencode(&amp;quot;https://&amp;quot;.$this-&amp;gt;user.&amp;quot;:&amp;quot;.$this-&amp;gt;pw.&amp;#039;@&amp;#039;.$url));&lt;br /&gt;
		$simplexml=simplexml_load_file(&amp;quot;test.xml&amp;quot;);&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manchmal erwartet der Server weitere Header. Dann muß man die Datei auf eine andere Weise mit Context laden (siehe Beispiel Mobile.de und Snippets)&lt;br /&gt;
&lt;br /&gt;
==== Zusätzliche Header mit Stream Context senden ====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	// Variante - Einlesen mit Context um diverse Header mit zu schicken&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=== Zugriff auf Werte ===&lt;br /&gt;
&lt;br /&gt;
==== Suche über xPath ====&lt;br /&gt;
xPath kann man als Suchpfad über die XML Hierarchie sehen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$string = &amp;lt;&amp;lt;&amp;lt;XML&lt;br /&gt;
&amp;lt;a&amp;gt;&lt;br /&gt;
    &amp;lt;b&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;text&amp;lt;/c&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;stuff&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/b&amp;gt;&lt;br /&gt;
    &amp;lt;d&amp;gt;&lt;br /&gt;
        &amp;lt;c&amp;gt;code&amp;lt;/c&amp;gt;&lt;br /&gt;
    &amp;lt;/d&amp;gt;&lt;br /&gt;
&amp;lt;/a&amp;gt;&lt;br /&gt;
XML;&lt;br /&gt;
&lt;br /&gt;
$xml = new SimpleXMLElement($string);&lt;br /&gt;
&lt;br /&gt;
/* Search for &amp;lt;a&amp;gt;&amp;lt;b&amp;gt;&amp;lt;c&amp;gt; */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;/a/b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;/a/b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/* Relative paths also work... */&lt;br /&gt;
$result = $xml-&amp;gt;xpath(&amp;#039;b/c&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
while(list( , $node) = each($result)) {&lt;br /&gt;
    echo &amp;#039;b/c: &amp;#039;,$node,&amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Das oben gezeigte Beispiel erzeugt folgende Ausgabe:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/a/b/c: text&lt;br /&gt;
/a/b/c: stuff&lt;br /&gt;
b/c: text&lt;br /&gt;
b/c: stuff&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Zugriff auf Attribute ===&lt;br /&gt;
====Beispiel 1====&lt;br /&gt;
&lt;br /&gt;
Man lädt mittels foreach alle Attribute des SimpleXML Objektes in ein Array und greift dann darüber zu.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
	$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Hinweis: Damit der Wert des Attributes als String ausgegeben wird muß man Casten (string) ansonsten wird ein Objekt zurück gegeben.&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 2 ====&lt;br /&gt;
&lt;br /&gt;
Schneller Zugriff auf ein Attribut (Quelle php.net)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$att = &amp;#039;attribueName&amp;#039;;&lt;br /&gt;
&lt;br /&gt;
// Zugriff :&lt;br /&gt;
$attribute = $element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Casting als String liefert den Wert (ansonsten das Objekt)&lt;br /&gt;
$attribute = (string)$element-&amp;gt;attributes()-&amp;gt;$att;&lt;br /&gt;
&lt;br /&gt;
// Auch verändern des Wertes ist möglich :&lt;br /&gt;
$element-&amp;gt;attributes()-&amp;gt;$att = &amp;#039;New value of the attribute&amp;#039;;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 3 ====&lt;br /&gt;
Schneller Zugriff mit Hilfsfunktion (Quelle: php.net)&lt;br /&gt;
&lt;br /&gt;
SimpleXMLElement Object&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(&lt;br /&gt;
    [@attributes] =&amp;gt; Array&lt;br /&gt;
        (&lt;br /&gt;
            [id] =&amp;gt; 55555&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
    [text] =&amp;gt; &amp;quot;hello world&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Funktion:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
function xml_attribute($object, $attribute)&lt;br /&gt;
{&lt;br /&gt;
    if(isset($object[$attribute]))&lt;br /&gt;
        return (string) $object[$attribute];&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Nutzung:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print xml_attribute($xml, &amp;#039;id&amp;#039;); //prints &amp;quot;55555&amp;quot;&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Beispiel 4 ====&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Ein Ergebnis aus xPath ist ein Array von $sxe Objekten&amp;#039;&amp;#039;&amp;#039; und kann z.B. so aussehen (aus mobile.de mit var_dump ausgegeben):&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
array(1) {&lt;br /&gt;
  [0]=&amp;gt;&lt;br /&gt;
  object(SimpleXMLElement)#3 (1) {&lt;br /&gt;
    [&amp;quot;@attributes&amp;quot;]=&amp;gt;&lt;br /&gt;
    array(4) {&lt;br /&gt;
      [&amp;quot;total&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;85&amp;quot;&lt;br /&gt;
      [&amp;quot;page-size&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(2) &amp;quot;50&amp;quot;&lt;br /&gt;
      [&amp;quot;current-page&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;1&amp;quot;&lt;br /&gt;
      [&amp;quot;max-pages&amp;quot;]=&amp;gt;&lt;br /&gt;
      string(1) &amp;quot;2&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Darauf ist auch ein direkter Zugriff möglich:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	private function parseResultInfo($sxe){&lt;br /&gt;
		$arrInfo = array();&lt;br /&gt;
		$xpath=&amp;#039;//search:result&amp;#039;; // this works only if you have used the register_namespaces function in the snippets, otherwise you have to register xmlns:search=&amp;quot;http://services.mobile.de/schema/search&amp;quot;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//var_dump($result);&lt;br /&gt;
		$arrInfo[&amp;#039;total&amp;#039;] = (int)$result[0][&amp;#039;total&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;page-size&amp;#039;] = (int)$result[0][&amp;#039;page-size&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;current-page&amp;#039;] = (int)$result[0][&amp;#039;current-page&amp;#039;][0];&lt;br /&gt;
		$arrInfo[&amp;#039;max-pages&amp;#039;] = (int)$result[0][&amp;#039;max-pages&amp;#039;][0];&lt;br /&gt;
		//print_r($arrInfo);&lt;br /&gt;
		return $arrInfo;&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Kindknoten abfragen ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
$ns ist der Namespace, der zweite Parameter sagt ob rekursiv gesucht wird.&lt;br /&gt;
&lt;br /&gt;
== SimpleXML und Namespaces ==&lt;br /&gt;
=== Namespaces registrieren ===&lt;br /&gt;
Über eine kleine Funktion kann man sich arbeit sparen.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	function register_namespaces($sxe){&lt;br /&gt;
		$arrNs = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
                        echo($prefix.&amp;#039; = &amp;#039;.$ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Alle im XML Dokument angegebenen Namespaces werden geparsed und Registriert. So kann man sie in Kurzform ansprechen. (Siehe Beispiel Mobile.de)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Allgemein ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml = &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;
&amp;lt;book xmlns:chap=&amp;quot;http://example.org/chapter-title&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;My Book&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 1&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Donec velit. ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
    &amp;lt;chapter id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;chap:title&amp;gt;Chapter 2&amp;lt;/chap:title&amp;gt;&lt;br /&gt;
        &amp;lt;para&amp;gt;Lorem ipsum ...&amp;lt;/para&amp;gt;&lt;br /&gt;
    &amp;lt;/chapter&amp;gt;&lt;br /&gt;
&amp;lt;/book&amp;gt;&lt;br /&gt;
EOD;&lt;br /&gt;
&lt;br /&gt;
$sxe = new SimpleXMLElement($xml);&lt;br /&gt;
&lt;br /&gt;
// Zugriff mit Namespace Prefix&lt;br /&gt;
$sxe-&amp;gt;registerXPathNamespace(&amp;#039;c&amp;#039;, &amp;#039;http://example.org/chapter-title&amp;#039;);&lt;br /&gt;
$result = $sxe-&amp;gt;xpath(&amp;#039;//c:title&amp;#039;);&lt;br /&gt;
&lt;br /&gt;
foreach ($result as $title) {&lt;br /&gt;
  echo $title . &amp;quot;\n&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Direkter Zugriff im nächsen Beispiel&lt;br /&gt;
=== Beispiel Ebay Timestamp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$response = &amp;lt;&amp;lt;&amp;lt; XMLBLOCK&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;soapenv:Envelope xmlns:soapenv=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:xsd=&amp;quot;http://www.w3.org/2001/XMLSchema&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;soapenv:Body&amp;gt;&lt;br /&gt;
      &amp;lt;GeteBayOfficialTimeResponse xmlns=&amp;quot;urn:ebay:apis:eBLBaseComponents&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Timestamp&amp;gt;2005-10-28T01:01:04.668Z&amp;lt;/Timestamp&amp;gt;&lt;br /&gt;
        &amp;lt;Ack&amp;gt;Success&amp;lt;/Ack&amp;gt;&lt;br /&gt;
        &amp;lt;Version&amp;gt;429&amp;lt;/Version&amp;gt;&lt;br /&gt;
        &amp;lt;Build&amp;gt;e429_intl_Bundled_1949355_R1&amp;lt;/Build&amp;gt;&lt;br /&gt;
      &amp;lt;/GeteBayOfficialTimeResponse&amp;gt;&lt;br /&gt;
    &amp;lt;/soapenv:Body&amp;gt;&lt;br /&gt;
  &amp;lt;/soapenv:Envelope&amp;gt;&lt;br /&gt;
XMLBLOCK;&lt;br /&gt;
$xml = simplexml_load_string($response);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Zugriff auf Timestamp:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
echo &amp;quot;Time: &amp;quot; . &lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;http://schemas.xmlsoap.org/soap/envelope/&amp;#039;)-&amp;gt;children(&amp;#039;urn:ebay:apis:eBLBaseComponents&amp;#039;)-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp . &amp;quot;\n&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oder&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$xml-&amp;gt;children(&amp;#039;soapenv&amp;#039;, true)-&amp;gt;children()-&amp;gt;GeteBayOfficialTimeResponse-&amp;gt;Timestamp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Beispiele ==&lt;br /&gt;
===Beispiel Mobile de===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
class Mobile{&lt;br /&gt;
	var $arrNs = array();&lt;br /&gt;
&lt;br /&gt;
	public function init(){&lt;br /&gt;
		$this-&amp;gt;action = &amp;quot;&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;user = &amp;quot;username&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;pw = &amp;quot;passwort&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;customerId = &amp;quot;461731&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;clientId = &amp;quot;517329&amp;quot;;&lt;br /&gt;
		$this-&amp;gt;baseUrl = &amp;quot;services.mobile.de/1.0.0/ad/search&amp;quot;;&lt;br /&gt;
		$arrResult = array(); // Contains last Result-List&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	public function main(){&lt;br /&gt;
		$this-&amp;gt;init();&lt;br /&gt;
		$params = &amp;quot;?customerId=&amp;quot;.$this-&amp;gt;customerId.&amp;quot;&amp;amp;page.size=100&amp;quot;;&lt;br /&gt;
		$url = $this-&amp;gt;baseUrl.$params;&lt;br /&gt;
		&lt;br /&gt;
		$this-&amp;gt;sxe = $this-&amp;gt;fetch_xml_data_ctx($url);&lt;br /&gt;
		$this-&amp;gt;register_namespaces();&lt;br /&gt;
		$this-&amp;gt;parseXML($this-&amp;gt;sxe);&lt;br /&gt;
		//$this-&amp;gt;sxe_print_info();&lt;br /&gt;
		$this-&amp;gt;send_json($this-&amp;gt;arrResult);&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
    //Parse XML and create Array&lt;br /&gt;
    private function parseXML($sxe){&lt;br /&gt;
    	$arrAds = array();&lt;br /&gt;
    	unset($this-&amp;gt;arrResult);&lt;br /&gt;
    	// ADS&lt;br /&gt;
    	$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		if(count($result) &amp;gt; 0){&lt;br /&gt;
			foreach ($result as $ad) {&lt;br /&gt;
				// AUTO Parsing&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count] = $this-&amp;gt;sxe_to_array($ad,&amp;#039;ad&amp;#039;);&lt;br /&gt;
				&lt;br /&gt;
				// MANUAL Parsing&lt;br /&gt;
				// Images&lt;br /&gt;
				unset($arrImages);&lt;br /&gt;
				$arrRepresentation = $ad-&amp;gt;xpath(&amp;#039;ad:images/ad:image/ad:representation&amp;#039;);&lt;br /&gt;
				foreach($arrRepresentation as $representation){&lt;br /&gt;
					foreach($representation-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						$arrImages[$key][]=(string)$val;&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
				$this-&amp;gt;arrResult[ad][$count][&amp;#039;images&amp;#039;]= $arrImages;		&lt;br /&gt;
				$count += 1;&lt;br /&gt;
			}&lt;br /&gt;
		}&lt;br /&gt;
    }&lt;br /&gt;
	&lt;br /&gt;
    &lt;br /&gt;
    // Stores Attributes and Childs into Array&lt;br /&gt;
    private function sxe_to_array(SimpleXMLElement $sxe,$ns){&lt;br /&gt;
    	$arr = array();&lt;br /&gt;
    	// ATTRIBUTES&lt;br /&gt;
    	$count=0;&lt;br /&gt;
		foreach( $sxe-&amp;gt;attributes() as $attr_name =&amp;gt; $attr_value ){&lt;br /&gt;
			$arr[&amp;#039;attributes&amp;#039;][(string)$attr_name] = (string)$attr_value;&lt;br /&gt;
		}&lt;br /&gt;
		&lt;br /&gt;
		// CHILDREN&lt;br /&gt;
		$children = $sxe-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		foreach($children as $child_name=&amp;gt;$child_node){&lt;br /&gt;
			$arrChild = $this-&amp;gt;sxe_to_array($child_node,$ns);&lt;br /&gt;
			// RESSOURCE CHILD (ns resource)&lt;br /&gt;
			$resources = $this-&amp;gt;getResources($child_node);&lt;br /&gt;
			//print_r($resources);&lt;br /&gt;
			if(!empty($resources)) $arrChild[&amp;#039;resources&amp;#039;] = $resources;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name][&amp;#039;value&amp;#039;]=(string)$child_node;&lt;br /&gt;
			$arr[&amp;#039;children&amp;#039;][$count][$child_name] = $arrChild; &lt;br /&gt;
		}&lt;br /&gt;
    	return $arr;&lt;br /&gt;
    &lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    private function getResources($node){&lt;br /&gt;
		//add &amp;#039;resource&amp;#039; namespace children (mobilede uses this as language descriptors)&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		$ns=&amp;quot;resource&amp;quot;;&lt;br /&gt;
		$arr = array();&lt;br /&gt;
		$children = $node-&amp;gt;children($ns,TRUE);&lt;br /&gt;
		foreach($children as $resource_name=&amp;gt;$resource_node){&lt;br /&gt;
			//print_r($resource_node);&lt;br /&gt;
			$arrResource = $this-&amp;gt;sxe_to_array($resource_node,$ns);&lt;br /&gt;
			$arr[$count][$resource_name][&amp;#039;value&amp;#039;]=(string)$resource_node;&lt;br /&gt;
			//echo((string)$resource_node);&lt;br /&gt;
			//$arr[$count][$resource_name] = $arrResource; &lt;br /&gt;
			$count +=1;&lt;br /&gt;
		}&lt;br /&gt;
		return $arr;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
    private function sxe_print_info(){&lt;br /&gt;
    	$sxe = $this-&amp;gt;sxe;&lt;br /&gt;
    	$namespaces = $sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;##########&amp;lt;br&amp;gt;&amp;lt;strong&amp;gt;namespaces:&amp;lt;/strong&amp;gt; &amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	foreach($namespaces as $key=&amp;gt;$val){&lt;br /&gt;
    		//echo(&amp;quot;$key : $val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	}&lt;br /&gt;
    	echo(&amp;quot;&amp;lt;br&amp;gt;Name: &amp;quot;.$sxe-&amp;gt;getName().&amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    	//Print Ads Info&lt;br /&gt;
		$xpath=&amp;#039;//ad:ad&amp;#039;;&lt;br /&gt;
		$result = $this-&amp;gt;sxe-&amp;gt;xpath($xpath);&lt;br /&gt;
		//echo(&amp;quot;Number of ads: &amp;quot;.count($result).&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
		$count = 0;&lt;br /&gt;
		//ADs&lt;br /&gt;
		foreach ($result as $ad) {&lt;br /&gt;
			$count += 1;&lt;br /&gt;
			echo(&amp;quot;&amp;lt;strong&amp;gt;Ad $count &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);	&lt;br /&gt;
			$ad_children = $ad-&amp;gt;children(&amp;#039;ad&amp;#039;,TRUE);&lt;br /&gt;
			//AD 1st Gen Children&lt;br /&gt;
			if(count($ad_children) &amp;gt; 0){&lt;br /&gt;
				foreach ($ad_children as $ad_child_name=&amp;gt;$ad_child_node){&lt;br /&gt;
					echo(&amp;quot;&amp;lt;strong&amp;gt;Childname: $ad_child_name&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
					// ATTRIBUTES&lt;br /&gt;
					foreach($ad_child_node-&amp;gt;attributes() as $key=&amp;gt;$val){&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Attributes:&amp;lt;/strong&amp;gt; &amp;quot;);&lt;br /&gt;
						echo(&amp;quot;$key=$val&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						echo(&amp;quot;&amp;lt;strong&amp;gt;Children: &amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						// Ad 2nd Gen Children&lt;br /&gt;
						foreach($ad_child_node-&amp;gt;children() as $ad_child_name=&amp;gt;$child_node){&lt;br /&gt;
							echo(&amp;quot;Name: $child_name&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
						}&lt;br /&gt;
					}&lt;br /&gt;
				}&lt;br /&gt;
			}&lt;br /&gt;
			//$adurl = $ad-&amp;gt;{&amp;#039;detail-page&amp;#039;}-&amp;gt;value-&amp;gt;attributes()-&amp;gt;url;&lt;br /&gt;
			//echo(&amp;#039;&amp;lt;a href=&amp;quot;&amp;#039;.$adurl.&amp;#039;&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Link&amp;lt;/a&amp;gt;&amp;lt;br&amp;gt;&amp;#039;);&lt;br /&gt;
		}&lt;br /&gt;
   	}&lt;br /&gt;
   	&lt;br /&gt;
	function register_namespaces(){&lt;br /&gt;
		$this-&amp;gt;arrNs = $this-&amp;gt;sxe-&amp;gt;getNamespaces(true);&lt;br /&gt;
		foreach($this-&amp;gt;arrNs as $prefix =&amp;gt; $ns){&lt;br /&gt;
			$this-&amp;gt;sxe-&amp;gt;registerXPathNamespace($prefix, $ns);&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function fetch_xml_data_ctx($url){&lt;br /&gt;
		// Erzeugen eines Streams&lt;br /&gt;
		$headers = &amp;quot;Accept-language: de\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Accept: application/xml\r\n&amp;quot;;&lt;br /&gt;
		$headers .= &amp;quot;Authorization: Basic &amp;quot;.base64_encode(&amp;quot;$this-&amp;gt;user:$this-&amp;gt;pw&amp;quot;).&amp;quot;\r\n&amp;quot;;&lt;br /&gt;
		$opts = array(&lt;br /&gt;
  			&amp;#039;http&amp;#039;=&amp;gt;array(&lt;br /&gt;
    			&amp;#039;method&amp;#039;=&amp;gt;&amp;quot;GET&amp;quot;,&lt;br /&gt;
    			&amp;#039;header&amp;#039;=&amp;gt; $headers&lt;br /&gt;
              &lt;br /&gt;
  			)&lt;br /&gt;
		);&lt;br /&gt;
		$context = stream_context_create($opts);&lt;br /&gt;
		// Öffnen der Datei mit den oben definierten HTTP-Headern&lt;br /&gt;
		$file = file_get_contents(&amp;#039;https://&amp;#039;.$url, false, $context);&lt;br /&gt;
		$simplexml=simplexml_load_string($file);&lt;br /&gt;
		//print_r($file);&lt;br /&gt;
&lt;br /&gt;
		return $simplexml;&lt;br /&gt;
	&lt;br /&gt;
	}&lt;br /&gt;
	&lt;br /&gt;
	function send_json($arrJSON){&lt;br /&gt;
		// Wir geben der Anfrage ein JSON Objekt-Literal zurück&lt;br /&gt;
		$ajax_return_data = json_encode($arrJSON);&lt;br /&gt;
		header(&amp;#039;Cache-Control: no-cache, must-revalidate&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Pragma: no-cache&amp;#039;);&lt;br /&gt;
		header(&amp;#039;Content-Length: &amp;#039;.strlen($ajax_return_data));&lt;br /&gt;
		header(&amp;#039;Content-Type: application/json; charset=UTF-8&amp;#039;);&lt;br /&gt;
		echo $ajax_return_data;&lt;br /&gt;
		exit;&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
$mobile = new Mobile();&lt;br /&gt;
$mobile-&amp;gt;main();&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>46.5.47.162</name></author>
	</entry>
</feed>