Sandro99: Probleme beim Löschen von xml Einträgen in Playlist

Beitrag lesen

Hallo Ihr,
irgenwie seh ich den Wald vor lauter Bäumen nicht mehr und wollt hier mal fragen ob mir der eine oder andere evtl. einen Hint geben kann was falsch läuft.

Ich habe eine playlist.xml welche dem namespace http://xspf.org/ns/0 unterliegt. Aus diesem File beabsichtige ich einzelne Einträge zu löschen. Das möchte ich über ein PHP script bewerkstelligen. Ich benutze dazu die DOM Funktionen.

Was bereits geht: wenn ich den NameSpace ausser betracht lasse (die zeile <playlist xmlns="http://xspf.org/ns/0/" version="1"> aus dem xml File entferne, funktioniert das Löschen prima. Mit diesem Eintrag jedoch nicht.

Soweit zur Vorgeschichte.

Hier das XML File gekürzt welches Verwendung findet.

  
<?xml version="1.0" encoding="UTF-8"?>  
<playlist xmlns="http://xspf.org/ns/0/" version="1">  
<trackList>  
	<track>  
	    <creator>Rico Seith</creator>  
            <title>Blumenmaedchen Nathalie</title>  
	    <location>/musik/Blumenmaedchen Nathalie - Rico Seith.mp3</location>  
	</track>  
	<track>  
	    <creator>Rico Seith</creator>  
            <title>Das geht auf einmal viel zu schnell</title>  
	    <location>/musik/Das geht auf einmal viel zu schnell - Rico Seith.mp3</location>  
	</track>  
	<track>  
	    <creator>Marcel</creator>  
            <title>Dieses Maedchen</title>  
	    <location>/musik/Dieses Maedchen - Marcel.mp3</location>  
	</track>  
    </trackList>  
</playlist>  

Hier das PHP Script welches ich verwenden möchte um Einträge zu löschen.

  
<?php  
  
$file = 'playlist.xml';  
$location = '/musik/Blumenmaedchen Nathalie - Rico Seith.mp3';  
  
$doc = new DOMDocument;  
$doc->load($file);  
$doc->preserveWhiteSpace = false;  
$doc->formatOutput = true;  
  
$xpath = new DOMXPath($doc);  
$xpath->registerNamespace('xspf', "http://xspf.org/ns/0");  
  
$nodeList = $xpath->query(sprintf('//xspf:track[location="%s"]', $location));  
$nodeList->item(0)->parentNode->removeChild($nodeList->item(0));  
  
$doc->save($file);  
  
?>  

Wie geschrieben, ohne den NameSpace im xml File sowie die Einträge mit dem registerNamespace und dem xspf: vor dem track in der nodeList funktioniert das Löschen.

Hat von Euch einer eine Idee oder im günstigsten Fall das Wissen wo es hier in meinen Überlegungen mangelt ?

Recht vielen Dank für dienliche Hinweise.
Gruss, Sandro