Der Umgang mit Namespaces (Namensräumen) in SimpleXML in PHP

Heute Abend wollte ich schnell ein kleines Script schreiben, dass mir für ein institutionelles Repositorium eine Liste aller Sets ausgibt. Das ist grundsätzlich nicht schwer, denn die Mehrzahl der Institutionellen Repositoiren verwendet OAI-PMH (Open Archives Initiatives Public Metadata Harvesting) und somit ist der Zugriff auf die Daten gut dokumentiert. Für die Library of Congress in den Vereinigten Staaten findet man diese Liste hinter dem üblichen Verb=ListSets und bekommt so eine XML Datei ausgegeben.

Wer diese Datei jedoch mit SimpleXML in PHP einliest, stösst dank der verwendeten Namensräume (Namespaces) schnell an eine kleine Mauer. Diese Mauer gilt es zu durchbrechen, was zum Glück nicht so schrecklich schwer ist.

Hier ein Teil der XML Datei:

Die Daten an die ich ran möchte sind also in im Namespace dc: (für Dublin Core). Wie kommt man da nun am besten ran?

Zu erst muss man sich die URI (Uniform Resource Identifier) für den jeweiligen Namespace raussuchen. Das ist zum Glück ganz einfach, denn gültiges XML gibt diesen immer an. Der Name Space oai_dc wird unter http://www.openarchives.org/OAI/2.0/oai_dc/ beschrieben, der Name Space dc unter http://purl.org/dc/elements/1.1/. Für den nächsten Schritt benötig man nun also nur noch die SimpleXMLElement Methode children. Oder genau gesagt:

Dann hat man in der Variable $ns_dc ein Array mit allen „Elementen“ des gewünschten Namensraums und kann diese ganz nun ganz normal erreichen.

Claus Wolf

Seit 1994 im Netz unterwegs und seit 2004 eingefleischter Mac-Nutzer. 21.5" iMac - 2.9GHz Intel Core i5, 16GB RAM, 1TB Fusion Drive HDD / 128GB iPhone 7 / 128GB iPad 9,7" (2017) / 15" MacBook Pro (Mitte 2014) in der Firma...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

This site uses Akismet to reduce spam. Learn how your comment data is processed.